Datei schreiben und lesen



  • Hallo,
    ich habe gerade versucht eine Klasse zu schreiben, in der Textdateien ausgelesen werden und wieder geschrieben können, eine kleine Minidatenbank so in der Art. Nun wird im Konstruktor der Dateienname der Quelldatei angegeben, allerdings muß ich ja erstmal überprüfen, ob die Datei bereits existiert oder ob sie noch angelegt werden muß. In der API habe ich die Methode boolean isFile() im Packet java.io.File gefunden, allerdings ist dort nicht angegeben, wie diese benutzt werden kann. Den Dateiennamen als String als Parameter anzugeben ist anscheinend falsch, zumindestens wird mir dann immer ein Fehler ausgegeben:

    import java.io.*;
    ...
    if(isFile(this.quelldatei) == false) // Falsch - Warum ???
    {
    // Neue Datei erstellen
    }
    ...
    

    Dann würde ich gerne eine neue Datei erzeugen, hierzu habe ich in der API den Befehl boolean createNewFile() gefunden, aber wieder keine Infos ueber Parameter, irgendwie verwirrt mich das 🙄
    Kann mir jemand helfen ?



  • ich glaub bei der Funktion "isFile()" kannst du keinen Parameter übergeben (?)

    versuch mal sowas wie:

    if (this.quelldatei.isFile()==false)
    

    Von welchem Typ ist "quelldatei" ?



  • Ich glaube du hast die API nur kurz überflogen 🙂
    Es gibt eine Methode von File die exists() lautet und dir damit hilft das Problem zu lösen. Was du allerdings machen musst ist ein File-Objekt mit dem Dateinamen zu erzeugen und auf dieses Objekt exists() aufzurufen.

    File theFile = null;
    try {
        theFile = new File("filename.dat");
        if (!theFile.exists()) {
            // hier das tun wenn die Datei nicht existiert
        } else {
            // hier das, was du machen willst wenn sie existiert
        }
    } catch (FileNotFoundException fnfex) {
        fnfex.printStackTrace();
    }
    


  • Achsooooo, danke, diese übertriebene Oojektorientiertheit bei Java treibt mich langsam in den Wahnsinn 😉



  • Hm, übrigens CengizS, die FileNotFoundException hat in diesem Fall nicht funktioniert, habs dann so gelöst:

    try
            { 
                this.quelldatei = new File(Quelldatei); 
                if (!this.quelldatei.exists())
                {
                    try
                    {
                        quelldatei.createNewFile();
                    }
                    catch (IOException ioe)
                    {
                        System.out.println(ioe.toString());
                    }
                }                
             }
             catch (NullPointerException npe)
             { 
                 System.out.println(npe.toString());
             }
    


  • Wenn du einmal in einem try-Block bist benötigst du keine weiteren try-Blöcke. DAs ist ja gerade das Schöne an Exceptions. Du musst nicht wie früher über return-Values auf Korrektheit prüfen und hast dementsprechend keine sinnlosen verschachtelungen 😉

    Das heisst also für dich:

    try {  
        this.quelldatei = new File(Quelldatei);
        if (!this.quelldatei.exists())
            quelldatei.createNewFile();
    } catch (NullPointerException npe) {
        System.out.println(npe.toString());
    } catch (IOException ioe) {
        System.out.println(ioe.toString());
    }
    


  • Ok, danke für den Hinweis 🙂


Anmelden zum Antworten