ZIP-Datei mit java.nio erstellen und Dateien in ihr erstellen

Schnoogle

Mitglied
Hallo,

ich habe ein Programm geschrieben, dass aus mehreren Matrizzen von double-Werten mehrere CSV-Dateien direkt in einer ZIP-Datei erstellt. Hierfür habe ich die java.io und die java.util API verwendet und dabei FileOutputStream, BufferedOutputStream, ZipOutputStream, OutputStreamWriter und BufferedWriter verwendet.

Nun würde ich diese Anwendung testweise auch mit der neuen java.nio so implementieren, dass die ZIP-Datei asynchron geschrieben wird und ich evtl. von Multithreading profitieren kann.

Nun stecke ich aber schon bei grundlegenden Dingen fest, denn folgender Code führt zu folgender Exception:

Code:
try {
   Path path = Files.createTempFile("Archive", ".zip");
   FileSystem fileSystem = FileSystems.newFileSystem(path, null);
   System.out.println(fileSystem);
} catch (final IOException e) {
   e.printStackTrace();
}

Exception in thread "main" java.util.zip.ZipError: zip END header not found

at com.sun.nio.zipfs.ZipFileSystem.zerror(ZipFileSystem.java:1605)
at com.sun.nio.zipfs.ZipFileSystem.findEND(ZipFileSystem.java:1021)
at com.sun.nio.zipfs.ZipFileSystem.initCEN(ZipFileSystem.java:1030)
at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:130)
at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:139)
at java.nio.file.FileSystems.newFileSystem(Unknown Source)
at de.koch.nio.Demo.main(Demo.java:19)

Wie kann ich denn mit Java.nio einen zu folgendem Code aquivalenten Code erzeugen.

Code:
File file = File.createTempFile("Archive", ".zip");
FileOutputStream fileOutputStream = new FileOutputStream(file);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
ZipOutputStream zipOutputStream = new ZipOutputStream(bufferedOutputStream);
 
Zurück