Hallo zusammen
Ich möchte eine zip-Datei erstellen und diese mit ebenfalls selbst erstellten Dateien füllen. Da man beim Erstellen von Files ja immer Pfade angeben muss, nehm ich temporäre Dateien und lösch diese am Ende der Prozedur. Da alles auf einem Tomcat laufen soll, nehm ich am Ende die delete(), statt deleteOnExit() Methode. Zu Beginn hab ich den Block mit dem BufferedInputStream nicht verwendet. Da hat dann alles geklappt, aber die Dateien im zip-Archive hatten dann keinen Inhalt. Mit dem BufferedInputStream-Block haben die Datein im zip dann ach den Inhalt "aStringX", nur werden sie jetzt nicht mehr gelöscht.
Was muss ich machen, um Dateien zu erstellen und mit Inhalt zu füllen und diese dann in ein neu erstelltes Zip-Archiv zu packen? Am Ende darf nur das zip-Archiv vorhanden sein.
Schon mal vielen Dank und schöne Grüße
Ich möchte eine zip-Datei erstellen und diese mit ebenfalls selbst erstellten Dateien füllen. Da man beim Erstellen von Files ja immer Pfade angeben muss, nehm ich temporäre Dateien und lösch diese am Ende der Prozedur. Da alles auf einem Tomcat laufen soll, nehm ich am Ende die delete(), statt deleteOnExit() Methode. Zu Beginn hab ich den Block mit dem BufferedInputStream nicht verwendet. Da hat dann alles geklappt, aber die Dateien im zip-Archive hatten dann keinen Inhalt. Mit dem BufferedInputStream-Block haben die Datein im zip dann ach den Inhalt "aStringX", nur werden sie jetzt nicht mehr gelöscht.
Was muss ich machen, um Dateien zu erstellen und mit Inhalt zu füllen und diese dann in ein neu erstelltes Zip-Archiv zu packen? Am Ende darf nur das zip-Archiv vorhanden sein.
Schon mal vielen Dank und schöne Grüße
Java:
ZipOutputStream zipOut = null;
BufferedInputStream bis = null;
try
{
zipOut = new ZipOutputStream(new FileOutputStream("test.zip"));
for (int i = 0; i < 10; i++)
{
File temp = File.createTempFile("test" + i, ".txt");
BufferedWriter out = new BufferedWriter(new FileWriter(temp));
out.write("aString" + i);
out.close();
String fileName = temp.getAbsolutePath();
bis = new BufferedInputStream(new FileInputStream(fileName));
int avail = bis.available();
byte[] buffer = new byte[avail];
if (avail > 0)
{
bis.read(buffer, 0, avail);
}
ZipEntry ze = new ZipEntry(temp.getName());
zipOut.putNextEntry(ze);
zipOut.write(buffer, 0, buffer.length);
zipOut.closeEntry();
temp.delete();
}
}