私は このスレッドの指示に従い、そこにあるコードを使用して、ファイルを解凍して再圧縮せずにzipファイルに追加することができましたが、問題があります。コードを表示させてください。
private void saveFileIntoProjectArchive(Path pathOfFile) {
this.projectArchiveFile.setWritable(true, false);
Path zipFilePath = Paths.get(this.projectArchiveFile.getAbsolutePath()),
pathToSaveInsideZIP = null;
FileSystem fs;
try {
fs = FileSystems.newFileSystem(zipFilePath, null);
pathToSaveInsideZIP = fs.getPath(pathOfFile.toString().substring((int) this.transactionalProjectFolder.getAbsolutePath().length()));
System.out.println("Coping from:\n\t"+pathOfFile+"\nto\n\t"+pathToSaveInsideZIP);
Files.copy(pathOfFile, pathToSaveInsideZIP, REPLACE_EXISTING);
System.out.println("Done!!!");
fs.close();
} catch (java.nio.file.NoSuchFileException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
projectArchiveFile.setWritable(false, false);
}
私がやろうとしているのは、同じプロジェクトに多くのファイルがあり、そのプロジェクトはアーカイブ(ZIP、コードではprojectArchiveFileというjava.io.File、私のクラスのインスタンス変数によって参照される)であり、これらのファイルはすべて、アーカイブ内の特定のファイルを操作する場合、そのファイルのみをアーカイブ内のファイルと同じ構造のフォルダー(ZIP、projectArchiveFile)に解凍します。そのフォルダーへの参照はjavaです。 .io.FileはtransactionalProjectFolderと呼ばれ、これも私のクラスのインスタンス変数です。しかし、私にこのエラーを与えています:
対処元:C:\ Dir1 \ Dir2 \ Dir3 \ Begin of Archivestucure\アーカイブ構造の別のフォルダーレプリカ\ExcelFile.xlsmから\Beginof Archivestucure\アーカイブ構造の別のフォルダーレプリカ\ExcelFile.xlsm
java.nio.file.NoSuchFileException: Begin of Archive stucure\Another folder replica of the archive structure\ at com.sun.nio.zipfs.ZipFileSystem.checkParents(ZipFileSystem.java:846)
at com.sun.nio.zipfs.ZipFileSystem.newOutputStream(ZipFileSystem.java:515)
at com.sun.nio.zipfs.ZipPath.newOutputStream(ZipPath.java:783)
at com.sun.nio.zipfs.ZipFileSystemProvider.newOutputStream(ZipFileSystemProvider.java:276)
at java.nio.file.Files.newOutputStream(Files.java:170)
at java.nio.file.Files.copy(Files.java:2826)
at java.nio.file.CopyMoveHelper.copyToForeignTarget(CopyMoveHelper.java:126)
at java.nio.file.Files.copy(Files.java:1222)
残りのスタックトレースは私のクラスです。
アーカイブ(zip)のルートに書き込むことはできましたが、アーカイブ(zip)内にあるフォルダー内に書き込もうとすると、スタックトレースでわかるように、失敗します。それとjava.nio.file.NoSuchFileException: Begin of Archive stucure\Another folder replica of the archive structure\
、コピーしようとしているファイルの場合、名前の直前で停止します。zip内のパスが存在し、適切なスペルで書きたくないことを完全に確認します(Filesで試しました) .copy and Files.move)アーカイブ内のファイル、私はこれで1か月間立ち往生しています、他に何をすべきかわかりません、どんな提案も歓迎されます!!!
前もって感謝します!:)..。