java - 使用 Java FileSystems 删除 zip 中的多个文件
问题描述
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 文件的最佳方法是什么?
解决方案
想通了这个问题。上面的代码没有任何问题,事实证明正在使用的 Zip Reader 服务不会关闭 zip 条目。想知道为什么这不会导致 MAC OS 出现问题。
推荐阅读
- python - 通过子字符串信息查找 DataFrame 中的所有行
- firebase - 当页面数据未从 Firebase 完全加载时显示加载指示器/微调器 - Flutter
- javascript - 反应原生应用程序中的重新渲染太多,我该怎么办?
- ios - SwiftUI 中的小部件URL
- php - 从 PHP Web 应用程序连接到本地/本地 Active Directory
- powershell - 向PowerShell中的多个地址发送电子邮件
- c++ - 运行时 C++ 数学无法按预期工作
- delphi - 调整表格大小以适合其标题
- vim - vim range .+1,$ 包含当前行,对一行影响太大
- database - Symfony:更新数据库模式以反映已删除的表