java中将文件写入文件夹中,并解压
时间: 2024-12-23 10:23:49 浏览: 48
在Java中,你可以使用`java.util.zip`包中的`ZipOutputStream`来创建并写入压缩文件,然后使用`java.io.File`类配合`Files`工具类来操作文件和目录。以下是基本步骤:
1. 创建`ZipOutputStream`:
```java
import java.io.*;
import java.nio.file.Files;
import java.util.zip.*;
public void zipAndWrite(String sourceFile, String destinationFolder) throws IOException {
File folder = new File(destinationFolder);
if (!folder.exists() && !folder.mkdir()) {
throw new IOException("Failed to create destination folder.");
}
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(destinationFolder + "/archive.zip"));
// 添加源文件到压缩流
addFileToZip(sourceFile, zos);
zos.close();
}
private void addFileToZip(String inputFile, ZipOutputStream zos) throws IOException {
FileInputStream fis = new FileInputStream(inputFile);
ZipEntry entry = new ZipEntry(inputFile.substring(inputFile.lastIndexOf("/") + 1));
zos.putNextEntry(entry);
byte[] bytes = new byte[4096];
int length;
while ((length = fis.read(bytes)) >= 0) {
zos.write(bytes, 0, length);
}
zos.closeEntry();
fis.close();
}
```
2. 解压文件:
```java
public void unzip(String zipfile, String targetFolder) throws IOException {
File destDir = new File(targetFolder);
if (!destDir.exists() && !destDir.mkdirs()) {
throw new IOException("Failed to create target directory for extraction.");
}
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipfile))) {
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
String entryName = entry.getName();
File outputFile = new File(destDir, entryName);
if (entry.isDirectory()) {
outputFile.mkdirs();
} else {
try (OutputStream outputStream = new FileOutputStream(outputFile)) {
byte[] buffer = new byte[1024];
int read;
while ((read = zis.read(buffer)) > 0) {
outputStream.write(buffer, 0, read);
}
outputStream.flush();
}
}
zis.closeEntry();
}
}
}
```
阅读全文
相关推荐


















