2009-05-16 12 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"); 
    }  
} 

Chaque fois que je compile ce qui précède, je reçois un message disant ne peut pas trouver la classe symbole IOException ene peut pas trouver la classe de symboles IOException

quelqu'un peut me dire comment y remédier s'il vous plaît: d

grâce

+0

maintenant il dit que, après l'importation tous le paquet io que FileNotFoundException e a déjà été pris – user108110

+0

FileNotFoundException doit être au-dessus IOException car il est une sous-classe de IOException . – TheSoftwareJedi

Répondre

13

IOException est une classe du package java.io, Donc, pour l'utiliser, vous devez ajouter une déclaration import à votre code. import java.io.*; (au sommet du fichier java, entre le nom du package et votre déclaration de classe)

FileNotFoundException est un IOException. C'est une spécialisation de IOException. Une fois que vous avez intercepté l'exception IOException, le flux du programme n'atteindra jamais le point de vérification d'une exception d'E/S plus spécifique. Il suffit d'échanger ces deux, pour tester le cas le plus spécifique d'abord (FileNotFound) et puis gérer (attraper) toutes les autres IOExceptions possibles.

+0

oui c'est correct: D désolé je n'ai pas vu votre deuxième partie à la réponse à l'origine, vous devez avoir édité votre réponse ?! – user108110

+0

Les importations sont un travail fastidieux une fois que vous les avez maîtrisées. Il est donc préférable de configurer votre IDE (s'il le supporte) pour effectuer une insertion automatique des déclarations d'importation afin d'éviter des problèmes comme celui-ci. – Azder

+0

Dans Eclipse, par exemple, j'appuie sur Ctrl + Maj + O de temps en temps pour organiser les importations. Aussi quand un nom de classe comme IOException est souligné (évidemment une importation manquante), alors je place mon curseur dans le mot souligné et j'appuie sur Ctrl + 1 pour obtenir des conseils sur la résolution de l'erreur. Dans le cas où la classe non importée est Date, vous auriez le choix entre java.sql.Date et java.util.Date, etc ... Ctrl + 1 est un raccourci Eclipse très utile. –

1

Vous devez

import java.io; 

en haut de votre fichier.

En outre, FileNotFoundException doit être supérieur à IOException car il s'agit d'une sous-classe de IOException.

+1

java.io. *, shurely? –

0

Vous devez soit importer le package java.io. * en haut du fichier, ou entièrement remplissant les conditions nécessaires à l'exception que java.io.IOException

0

intervertir l'ordre de FileNotFoundException et IOException

+0

oui je l'ai fait et cela a fonctionné: D pouvez-vous me dire pourquoi c'est le cas s'il vous plaît que c'est toute la pratique que je fais à la moment et j'ai passé un examen dans une semaine et je n'ai pas réalisé l'ordre compté – user108110

+0

MasterPeter l'a bien expliqué. –

3

Votre manque probablement une référence import-IOExceptionclass. Il est situé dans le paquet java.io. Puis-je suggérer un petit changement dans votre méthode? Toujours fermer le flux dans un bloc finally:

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"); 
    } 
} 
Questions connexes