Löschen einer zip-Datei nach dem entpacken in java
So löschen Sie eine zip-Datei in java? Datei.delete-Methode gibt false zurück. Warum?
File file = new File("/mibook/"+mFilename+"/"+mZipname.toString());
boolean deleted = file.delete();
edit:
Regel "sollte das Verzeichnis leer sein, bevor eine Löschung.." funktioniert es gelten für die zip-Datei?
Meine Datei entpacken-code
public void unzip() throws IOException { FileInputStream fin=null; ZipInputStream zin=null; File file =null; ZipEntry ze ; FileOutputStream fout=null; try{ System.out.println(_zipFile ); System.out.println(_location); fin = new FileInputStream(_zipFile); zin = new ZipInputStream(fin); ze= null; byte[] buffer = new byte[1024]; int length; while ((ze = zin.getNextEntry()) != null) { file = new File((_location +"/" + ze.getName())); file.getParentFile().mkdirs(); fout= new FileOutputStream(_location + ze.getName()); while ((length = zin.read(buffer))>0) { fout.write(buffer, 0, length); } zin.closeEntry(); fout.close();
} zin.close(); }catch(Exception e) { Log.e("Decompress", "unzip", e); }
finally {fin.close(); zin.close(); fout.close(); } }
Poste bitte den code, den Sie verwendet haben.
bearbeitet meine Frage
Für bessere Hilfe früher, nach einem SSCCE (pscode.org/sscce.html). Da das problem code-downloads, Zip -, könnten Sie die basicservice.zip die Datei auf meiner Website (pscode.org/jws/api.html#bs) es ist klein, ungefähr 3 kB.InformationsquelleAutor vnshetty | 2011-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn
file.delete()
false zurückgibt, ist dann meine Vermutung ist, dass ein anderer Prozess hat die zip-Datei öffnen - oder sogar Ihre eigenen Prozess.file.exists()
zurück?Vorausgesetzt, Sie haben alle, die in Java, ist die wahrscheinlichste problem ist, dass dein code hat immer noch die ZipStream öffnen.
Ich Stimme mit Stephen. Ich vermute, Sie haben versäumt, in der Nähe einen stream irgendwo. Wir können nicht sagen, ohne zu sehen, Ihren code aber.
Bearbeitet meine questn ab.
Ich bin froh, dass, aber für die Vollständigkeit jeder Ihrer
close
Methoden sollten im eigenen finally-block (oder so etwas wie Guave istcloseQuietly
- Methode). Ansonsten, wenn eine close-Methode löst eine Ausnahme aus, die anderen streams nicht geschlossen werden.InformationsquelleAutor Jon Skeet
Müssen Sie sicherstellen, dass Sie in der Nähe Ihrer ZipFile.
Zum Beispiel hatte ich:
InformationsquelleAutor joe
Dies ist sehr Häufig, wenn Sie versuchen, eine Datei zu löschen, die Sie erstellt haben. Werden Sie sicher, dass
close
den FileWriter, die Sie verwendet, um erstellen Sie die entpackte Datei.Wenn Sie nicht herausfinden können, wo die Datei zu schließen, ist Ihre beste Wette sein kann, um zu rufen
file.deleteOnExit()
das sollte gelingen, auch wenn Sie versehentlich lassen Sie ein paar Datei-handles öffnen.InformationsquelleAutor Dan Fabulich
Verwenden :
FileUtils.delete(yourFile);
Diese korrigiert mein problem
InformationsquelleAutor Keita