takidoso
Erfahrenes Mitglied
Hallo und halli,
irgendwie habe ich folgendes Problem:
Ich möchte bei einer Anwendung, die etwas mit GZIPInputStream entpackt und dabei auf die Schnautze fällt die Datei mit einem Prefix umbenennen, damit sie bei einem weiteren Versuch nicht nochmal den selben Fehler verursacht.
Der Probe halber habe ich mal gnadenlos eine leere Datei dem Ganzen vorgegeben und siehe da, es fällt tatsächlich mit einem EOFileException auf die Nase, kann aber die Eingangsdatei nicht umbenennen. Mein gnadenloser Verdacht ist nun, dass es daran liegt, dass der InputStream nicht geschlossen wird.
So weit so gut, aber wie kann ich eigentlich einen GZIPInputStream schließen, wenn ich den Fehler schon im Konstruktor bekomme?
Irgendwie hat man da selbst doch keine Chance oder?
hier mein rudimentärer code, der natürlch eigetnlich einen try-catch-finally-Block benötigt, was aber in diesem Fall eigentlich trotzdem nichts nutzen dürfte, da ich ja AFAIK keine Refferenz auf den GZIPInputstream erhalte, weil es vorher schon verreckt.
Gibt es da vielleicht doch einen Trick, oder muss ich in solchen Fällen die Segel streichen?
Mit noch hoffenden Grüßen
Takidoso
irgendwie habe ich folgendes Problem:
Ich möchte bei einer Anwendung, die etwas mit GZIPInputStream entpackt und dabei auf die Schnautze fällt die Datei mit einem Prefix umbenennen, damit sie bei einem weiteren Versuch nicht nochmal den selben Fehler verursacht.
Der Probe halber habe ich mal gnadenlos eine leere Datei dem Ganzen vorgegeben und siehe da, es fällt tatsächlich mit einem EOFileException auf die Nase, kann aber die Eingangsdatei nicht umbenennen. Mein gnadenloser Verdacht ist nun, dass es daran liegt, dass der InputStream nicht geschlossen wird.
So weit so gut, aber wie kann ich eigentlich einen GZIPInputStream schließen, wenn ich den Fehler schon im Konstruktor bekomme?
Code:
Caused by: java.io.EOFException
at java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:202)
at java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:192)
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:131)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58)
at de.mypackage.util.FileUtils.gunzip(FileUtils.java:594)
hier mein rudimentärer code, der natürlch eigetnlich einen try-catch-finally-Block benötigt, was aber in diesem Fall eigentlich trotzdem nichts nutzen dürfte, da ich ja AFAIK keine Refferenz auf den GZIPInputstream erhalte, weil es vorher schon verreckt.
Java:
static public File gzip(.....)
{
....
File destinationFile = new File(destFileName);
FileOutputStream dest = new FileOutputStream(destinationFile);
GZIPOutputStream out = new GZIPOutputStream(dest, bufferSize);
byte data[] = new byte[bufferSize];
FileInputStream fis = new FileInputStream(sourceFile);
BufferedInputStream origin = new BufferedInputStream(fis, bufferSize);
int count;
while (( count = origin.read(data, 0, bufferSize) ) != -1)
{
out.write(data, 0, count);
}
origin.close();
out.flush();
out.close();
return destinationFile;
}
Gibt es da vielleicht doch einen Trick, oder muss ich in solchen Fällen die Segel streichen?
Mit noch hoffenden Grüßen
Takidoso