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中文件的最佳方法是什么?
您应注意,Windows中的路径斜杠是反向的:c:\你能举个例子吗?
找出问题。上面的代码没问题,事实证明我们正在使用一个Zip Reader服务,该服务不会关闭zip Entry。