java打包制定目录下的文件

ssspure 发布于 2016/09/19 18:33
阅读 176
收藏 0
现在有一个需求,是打包某文件夹下的某个文件。目录结构如下。
x文件夹下有a文件夹,a文件夹下有a.txt,aa.txt和b文件夹,b文件夹下有c.txt,d.txt,demo.txt和e.txt。
现在想打包b文件夹下的demo.txt文件,并且目录结构要保持不能变。也就是打包后的目录结构是test.zip->a(文件夹)->b(文件夹)->demo.txt。
想请假一下各位大神有没有什么好的思路。该用什么类库,我查到的是java.util.zip下面有提供相关zip的操作。

如果能简单写一下步骤就更感谢了。谢谢各位了。


加载中
0
一生做恶
一生做恶
用java代码不妨换个角度,建立临时文件目录,然后再打包,打包完了,再删除临时文件夹;如果不限代码,用ant自定义打包
0
神恰恰
神恰恰
// 遍历文件夹并按照现有的目录结构压缩
public static void zipFiles(ZipOutputStream out, File[] files, String root) throws IOException {
    for (int i = 0; i < files.length; i++) {
        if (files[i].isDirectory()) {
            zipFiles(out, files[i].listFiles(), root);
        } else {
                            //根据root参数来确定,需要从那一层目录开始打包
            String realpath = files[i].getPath().split(root)[1];
            ZipEntry zipEntry = new ZipEntry(realpath);
            out.putNextEntry(zipEntry);
            FileInputStream fileInputStream = new FileInputStream(files[i].getPath());
            System.out.println(files[i].getPath());
            int length = 0;
            byte[] buffer = new byte[1024];
            while ((length = fileInputStream.read(buffer)) > 0) {
                out.write(buffer, 0, length);
            }
            fileInputStream.close();
            out.flush();
        }
    }
}



返回顶部
顶部