Java: ZipFileSystemProvider 不复制 zip 文件中的文件
Java: ZipFileSystemProvider does not copying file in zip file
我写了下面的代码:
Path mainFile = Paths.get("schnittprofiles/16/4/29/5/", "main/Profil_BH_121_16_04_29_05.json");
Path zipFile = Paths.get("schnittprofiles/16/4/29/5/", "main/Profil_BH_121_16_04_29_05.zip");
Map<String, String> zipProperties = new HashMap<>();
zipProperties.put("create", "true");
if (Files.notExists(mainFile)) {
Files.createDirectories(mainFile.getParent());
Files.createFile(mainFile);
}
Files.write(mainFile, "ABCDEF".getBytes(), StandardOpenOption.CREATE);
URI uri = URI.create("jar:" + zipFile.toUri());
System.out.println(uri);
FileSystem zipfs = FileSystems.newFileSystem(uri, zipProperties);
Path pathInZipfile = zipfs.getPath("Profil_BH_121_16_04_29_05.json");
Files.copy(mainFile, pathInZipfile,
StandardCopyOption.REPLACE_EXISTING);
问题是,文件 Profil_BH_121_16_04_29_05.json
不会被复制到 Profil_BH_121_16_04_29_05.zip
。这意味着我只得到一个空的 Profil_BH_121_16_04_29_05.zip
文件,里面没有 json 文件。
我错过了什么吗?
我自己解决:
我忘记尝试使用资源块,因此文件系统永远不会关闭并且文件永远不会被复制:
路径主文件=Paths.get("Profil_BH_121_16_04_29_05.json");
路径 zipFile = Paths.get("Profil_BH_121_16_04_29_05.zip");
Map<String, String> zipProperties = new HashMap<>();
zipProperties.put("create", "true");
zipProperties.put("encoding", "UTF-8");
if (Files.notExists(mainFile)) {
// Files.createDirectories(mainFile.getParent());
Files.createFile(mainFile);
}
Files.write(mainFile, "ABCDEF".getBytes(), StandardOpenOption.CREATE);
URI uri = URI.create("jar:" + zipFile.toUri());
System.out.println(uri);
try (FileSystem zipfs = FileSystems.newFileSystem(uri, zipProperties)) {
Path pathInZipfile = zipfs.getPath("Profil_BH_121_16_04_29_05.json");
Files.copy(mainFile, pathInZipfile,
StandardCopyOption.REPLACE_EXISTING);
}
我写了下面的代码:
Path mainFile = Paths.get("schnittprofiles/16/4/29/5/", "main/Profil_BH_121_16_04_29_05.json");
Path zipFile = Paths.get("schnittprofiles/16/4/29/5/", "main/Profil_BH_121_16_04_29_05.zip");
Map<String, String> zipProperties = new HashMap<>();
zipProperties.put("create", "true");
if (Files.notExists(mainFile)) {
Files.createDirectories(mainFile.getParent());
Files.createFile(mainFile);
}
Files.write(mainFile, "ABCDEF".getBytes(), StandardOpenOption.CREATE);
URI uri = URI.create("jar:" + zipFile.toUri());
System.out.println(uri);
FileSystem zipfs = FileSystems.newFileSystem(uri, zipProperties);
Path pathInZipfile = zipfs.getPath("Profil_BH_121_16_04_29_05.json");
Files.copy(mainFile, pathInZipfile,
StandardCopyOption.REPLACE_EXISTING);
问题是,文件 Profil_BH_121_16_04_29_05.json
不会被复制到 Profil_BH_121_16_04_29_05.zip
。这意味着我只得到一个空的 Profil_BH_121_16_04_29_05.zip
文件,里面没有 json 文件。
我错过了什么吗?
我自己解决:
我忘记尝试使用资源块,因此文件系统永远不会关闭并且文件永远不会被复制:
路径主文件=Paths.get("Profil_BH_121_16_04_29_05.json"); 路径 zipFile = Paths.get("Profil_BH_121_16_04_29_05.zip");
Map<String, String> zipProperties = new HashMap<>();
zipProperties.put("create", "true");
zipProperties.put("encoding", "UTF-8");
if (Files.notExists(mainFile)) {
// Files.createDirectories(mainFile.getParent());
Files.createFile(mainFile);
}
Files.write(mainFile, "ABCDEF".getBytes(), StandardOpenOption.CREATE);
URI uri = URI.create("jar:" + zipFile.toUri());
System.out.println(uri);
try (FileSystem zipfs = FileSystems.newFileSystem(uri, zipProperties)) {
Path pathInZipfile = zipfs.getPath("Profil_BH_121_16_04_29_05.json");
Files.copy(mainFile, pathInZipfile,
StandardCopyOption.REPLACE_EXISTING);
}