java ZipEntry到文件

tzxcd3kk  于 2023-04-04  发布在  Java
关注(0)|答案(3)|浏览(182)

有没有直接的方法将java.util.zip.ZipEntry解压缩为File
我想指定一个位置(如“C:\temp\myfile.java”)并将Entry解压缩到该位置。
网上有一些流代码,但我更喜欢测试过的库函数。

gk7wooem

gk7wooem1#

使用ZipFile类

ZipFile zf = new ZipFile("zipfile");

获取入口

ZipEntry e = zf.getEntry("name");

获取输入流

InputStream is = zf.getInputStream(e);

保存字节

Files.copy(is, Paths.get("C:\\temp\\myfile.java"));
np8igboo

np8igboo2#

使用下面的代码将“zip文件”解压缩到File中,然后使用ZipEntry添加到列表中。希望这对您有帮助。

private List<File> unzip(Resource resource) {
    List<File> files = new ArrayList<>();
    try {
        ZipInputStream zin = new ZipInputStream(resource.getInputStream());
        ZipEntry entry = null;
        while((entry = zin.getNextEntry()) != null) {
            File file = new File(entry.getName());
            FileOutputStream  os = new FileOutputStream(file);
            for (int c = zin.read(); c != -1; c = zin.read()) {
                os.write(c);
            }
            os.close();
            files.add(file);
        }
    } catch (IOException e) {
        log.error("Error while extract the zip: "+e);
    }
    return files;
}
mjqavswn

mjqavswn3#

使用ZipInputStream通过使用getNextEntry()方法迭代移动到所需的ZipEntry。然后使用ZipInputStream.read(...)方法读取当前ZipEntry的字节。将这些字节输出到指向您选择的文件的FileOutputStream

相关问题