使用Java FileSystems在zip中删除多个文件

问题描述 投票:0回答:2
public static void deleteFilesInZip(
    String zipStringPath,
    List<String> paths
) throws IOException
{
    Map<String, String> env = new HashMap<>();
    env.put("create", "false");
    Path zipPath = Paths.get(zipStringPath);
    URI uri = URI.create("jar:" + zipPath.toUri());
    try (FileSystem fs = FileSystems.newFileSystem(uri, env))
    {
        for(String path: paths)
        {
            Path filePath = fs.getPath(path);
            Files.delete(filePath);
        }
    }
}

以上逻辑在MAC OS中工作正常,但在Windows中引发以下错误:

错误:java.nio.file.FileSystemException:C:\ Users \ XSXDXX \ Downloads \ Test.zip:该进程无法访问该文件,因为该文件正在被另一个进程使用。

当我知道我需要事先删除的文件的路径时,删除Zip中文件的最佳方法是什么?

java filesystems zip zipfile
2个回答
0
投票

您应注意,Windows中的路径斜杠是反向的:c:\你能举个例子吗?


0
投票

找出问题。上面的代码没问题,事实证明我们正在使用一个Zip Reader服务,该服务不会关闭zip Entry。

© www.soinside.com 2019 - 2024. All rights reserved.