2009-05-16 20 views
4
public void populateNotesFromFile() 
{ 
    try{ 
     BufferedReader reader = new BufferedReader(new FileReader(DEFAULT_NOTES_SAVED)); 
     String fileNotes = reader.readLine(); 

     while(fileNotes != null){ 
      notes.add(fileNotes); 
      fileNotes = reader.readLine(); 
     } 
     reader.close(); 
    } 
    catch (IOException e){ 
     System.err.println("The desired file " + DEFAULT_NOTES_SAVED + " has problems being read from"); 
    } 
    catch (FileNotFoundException e){ 
     System.err.println("Unable to open " + DEFAULT_NOTES_SAVED); 
    } 

    //make sure we have one note 
    if (notes.size() == 0){ 
     notes.add("There are no notes stored in your note book"); 
    }  
} 

Immer, wenn ich das finden kompilieren oben bekomme ich eine SMS-Nachricht: Symbolklasse IOException e kann nicht finden,kann nicht Symbolklasse IOException

kann mir jemand sagen, wie man es beheben bitte: d

dank

+0

jetzt heißt es, dass nach all dem io-Paket importieren, die FileNotFoundException e bereits gefangen – user108110

+0

FileNotFoundException oben IOException sein muss, da es sich um eine Unterklasse von IOException ist . – TheSoftwareJedi

Antwort

13

IOException eine Klasse aus dem java.io Paket ist, Um es zu verwenden, sollten Sie Ihrem Code eine import Deklaration hinzufügen. import java.io.*; (ganz oben auf der Java-Datei, zwischen dem Paketnamen und Klassendeklaration)

FileNotFoundException ist eine IOException. Es ist eine Spezialisierung von IOException. Sobald Sie die IOException abgefangen haben, wird der Programmablauf niemals zu dem Punkt kommen, dass er nach einer spezifischeren IOException sucht. Tauschen Sie einfach diese zwei aus, um für den spezifischeren Fall zuerst zu prüfen (FileNotFound) und , dann handle (catch) irgendwelche anderen möglichen IOExceptions.

+0

ja das ist richtig: D Entschuldigung, ich habe Ihren zweiten Teil der Antwort ursprünglich nicht gesehen, müssen Sie Ihre Antwort bearbeitet haben ?! – user108110

+0

Importe sind etwas mühsame Arbeit nach einmal haben Sie sie gemeistert. Daher ist es am besten, wenn Sie Ihre IDE so konfigurieren, dass Import-Deklarationen automatisch eingefügt werden, um Probleme wie diese zu vermeiden. – Azder

+0

In Eclipse zum Beispiel, drücke ich von Zeit zu Zeit Strg + Shift + O, um die Importe zu organisieren. Auch wenn ein Klassenname wie IOException unterstrichen wird (offensichtlich ein fehlender Import), dann platziere ich den Cursor in das unterstrichene Wort und drücke Strg + 1 für Tipps zur Lösung des Fehlers. Falls die nicht importierte Klasse Date ist, können Sie zwischen java.sql.Date und java.util.Date usw. wählen. Strg + 1 ist eine sehr nützliche Eclipse-Verknüpfung. –

1

Sie brauchen

import java.io; 

an der Spitze Ihrer Datei.

Auch FileNotFoundException muss über IOException sein, da es eine Unterklasse von IOException ist.

+1

java.io. *, sicher? –

0

Sie benötigen das java.io. * Paket an der Spitze der Datei entweder importieren oder vollständig qualifizieren die Ausnahme als java.io.IOException

0

die Reihenfolge der FileNotFoundException und IOException

+0

ja, ich tat dies und es funktioniert: D können Sie mir sagen, warum dies der Fall ist, bitte, da dies alle Praxis i am tue Moment, und ich habe eine Prüfung in einer Woche, und ich war nicht klar, um – user108110

+0

MasterPeter hat zählte es gut genug erklärt. –

3

Ihr wahrscheinlich fehlt ein import Bezug auf IOExceptionclass wechseln. Ich finde es im java.io Paket.

Kann ich eine kleine Änderung in Ihrer Methode vorschlagen? Schließen Sie immer den Strom in einem finally-Block:

public void populateNotesFromFile() { 
    BufferedReader reader = null; 
    try { 
     reader = new BufferedReader(new FileReader(DEFAULT_NOTES_SAVED)); 
     String fileNotes = reader.readLine(); 
     while (fileNotes != null) { 
      notes.add(fileNotes); 
      fileNotes = reader.readLine(); 
     } 
    } catch (FileNotFoundException e) { 
     System.err.println("Unable to open " + DEFAULT_NOTES_SAVED); 
    } catch (IOException e) { 
     System.err.println("The desired file " + DEFAULT_NOTES_SAVED 
       + " has problems being read from"); 
    } finally { 
     try { 
      reader.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    // make sure we have one note 
    if (notes.size() == 0) { 
     notes.add("There are no notes stored in your note book"); 
    } 
} 
Verwandte Themen