2017-09-26 75 views
0

文件我写了下面的代码:的Java:ZipFileSystemProvider不会复制在zip文件

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。这意味着我只会得到一个没有json文件的空文件Profil_BH_121_16_04_29_05.zip。 我错过了什么吗?

回答

2

我解决它通过自己:

我忘了与资源块的尝试,因此文件系统永远不会关闭和文件都不会被复制:

路径mainFile = Paths.get(“Profil_BH_121_16_04_29_05.json” ); Path 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); 
}