java压缩文件,不要把根目录压缩进去,代码实现
时间: 2023-08-04 09:23:55 浏览: 94
在Java中可以使用`java.util.jar.JarOutputStream`类来进行压缩操作,可以使用以下代码实现压缩并排除根目录:
```java
import java.io.*;
import java.util.jar.*;
public class JarCompressor {
public static void compress(String sourceFolder, String targetFile) throws IOException {
// 创建输出流
JarOutputStream target = new JarOutputStream(new FileOutputStream(targetFile));
// 打开源文件夹
File source = new File(sourceFolder);
// 获取源文件夹中的所有文件和子目录
File[] files = source.listFiles();
for (File file : files) {
// 排除根目录
if (file.isDirectory()) {
continue;
}
// 创建jar文件中的文件条目
JarEntry entry = new JarEntry(file.getName());
// 加入文件条目
target.putNextEntry(entry);
// 读取文件内容并写入到输出流中
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[1024];
int count = 0;
while ((count = in.read(buffer)) != -1) {
target.write(buffer, 0, count);
}
// 关闭输入流
in.close();
// 关闭文件条目
target.closeEntry();
}
// 关闭输出流
target.close();
}
}
```
在上述代码中,我们遍历了源文件夹中的所有文件和子目录,并使用`JarEntry`类创建了jar文件中的文件条目,然后读取源文件内容并将其写入到输出流中。我们在遍历文件时排除了根目录文件,并使用`JarOutputStream`类创建了输出流,最后关闭输出流即可。