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);
}