file löschen, streams evtl noch offen

MatheStein

Aktives Mitglied
hey leute hab ein kleines problem und zwar:

ich möchte in meinem code ein objekt aus einer datei auslesen und falls dies zu einem fehler führt (weil die datei beschädigt oder extern verändert wurde) dann soll diese gelöscht werden, ich weiß nur nicht wie 🙁

im moment sieht das ganze ca so aus

[JAVA=42]
File DATEI = new File(...);
FileInputStream Speicher_dat;
ObjectInputStream Speicher_in;
try{
if(DATEI.exists() && DATEI.isFile()){
Speicher_dat = new FileInputStream(DATEI);
Speicher_in = new ObjectInputStream(Speicher_dat);
Speicher_in.close();
Speicher_dat.close();
}
}
catch(Exception e){
if(umfragen_dat.exists()){
boolean gelöscht=umfragen_dat.delete();
}
else{
System.exit(0);
}
}

[/code]


das problem hier ist, dass die datei nie gelöscht wird, also "gelöscht" ergibt immer "false".

ich denke mal das liegt daran, dass die streams noch offen sind oder?

will ich diese im catch block schließen kommt immer der fehler, dass die streams evtl nicht initialisiert sind. hat von euch jemand eine elegante problemlösung??

gruß
 
Ja was genau
(
z. B.

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.io.IOException; must be caught or declared to be thrown
at error.Main.main(Main.java:21)
Java Result: 1

)
 
aso nein den teil meinte ich gar nicht 🙂 ich hab den code schon etwas geändert, was der kompiler gesagt hat weiß ich gar nicht mehr genau, war auf jeden fall nicht sehr hilfreich in dem moment.

ich meinte jetzt wirklich diese fehlermeldung von netbeans, also das der code an der stelle rot unterstrichen ist und da halt dieser fehler steht, wenn man auf die entsprechende stelle geht
 
Also mein Netbeans hat nichts dagegen wenn ich dem Code eine Klasse und die Variable umfragen_dat hinzufüge:

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wfqwef;

import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;

/**
 *
 * @author Cyrill
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        File DATEI = new File("");
        File umfragen_dat = new File("");
        FileInputStream Speicher_dat;
        ObjectInputStream Speicher_in;
        try {
            if (DATEI.exists() && DATEI.isFile()) {
                Speicher_dat = new FileInputStream(DATEI);
                Speicher_in = new ObjectInputStream(Speicher_dat);
                Speicher_in.close();
                Speicher_dat.close();
            }
        } catch (Exception e) {
            if (umfragen_dat.exists()) {
                boolean gelöscht = umfragen_dat.delete();
            } else {
                System.exit(0);
            }
        }
    }
}
 
ist die datei denn danach auch weg?
bei mir war sie es nicht.

und ich hab mich vorhin falsch ausgedrückt.
der hat gemeckert, wenn ich in dem catch-block die streams schließen wollte, da ich dachte dass die datei evtl nicht gelöscht wird, weil die streams noch offen sind wenn in der zeile "Speicher_in = new ObjectInputStream(Speicher_dat);
" die exception geworfen wird

gruß
 
Keine Ahnung habs schon gelöscht.. hehe
übrigens, variablen schreibt man immer klein, bei konstaten ALLES gross,
bei Packages alles klein
und man sollte englische Namen benutzen.
 

Zurück
Oben