2017-09-26 79 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); 
}