2015-12-09 2 views
0

J'ai la classe Loader où je charge le fichier txt dans BufferedReader à partir des ressources et retourne ce champ. J'utilise cette méthode mais cela agit vraiment étrange (pour moi). Lorsque je ne mets pas String str = bufferReader.readLine(); après bufferReader = new BufferedReader(fileReader); (dans la classe Loader) que bufferReader dans une autre classe est vide, et readLine() renvoie null. Quand j'écris ce morceau de code dans la classe Loader, je peux lire chaque ligne de txt, excepté celle qui est lue dans la classe Loader. En outre, je ne peux pas lire la dernière ligne si je ne mets pas entrer à la fin.BufferedReader est parfois vide

public BufferedReader loadFromFileToBufferReader(String fileName) { 
     ClassLoader classLoader = getClass().getClassLoader(); 
     System.out.print(getClass().getClassLoader().getResource("resources/" + fileName)); 
     File file = new File(classLoader.getResource("resources/" + fileName).getFile()); 
     BufferedReader bufferReader = null; 
     try (FileReader fileReader = new FileReader(file)) { 
      bufferReader = new BufferedReader(fileReader); 
      String str = bufferReader.readLine(); 

     } catch (IOException e) { 
      System.err.println("Something went terribly wrong with file reading"); 
     } 
     return bufferReader; 
    } 

et utilisation:

public Database() { 
     productsInDatabse = new ArrayList<>(); 
     codesList = new ArrayList<>(); 
     loader = new LoadFromFile(); 
     BufferedReader output = loader.loadFromFileToBufferReader("database.txt"); 
     Product product; 
     String line; 
     String[] array; 
     try { 

      line = output.readLine(); 

      while (line != null) { 

Répondre

0

Vous devez coller votre code ici car il est difficile d'en déduire toutes les causes possibles de ce sans voir le code à 100% mais je devine que vous avez fait le même fichier ouvert en même temps à partir de plusieurs sources sans le fermer avant d'un? Pourrait être littéralement des millions de petites choses, juste pour vous dire comment la même erreur m'est arrivé.

+0

J'ai ajouté du code. Est-ce mieux? – meDarq

+0

Oui, beaucoup mieux :) J'essayerais d'initialiser le bufferedReader dans la base de données avec un fichier de la classe de chargement et voir si cela fonctionne, Vous changez le type de retour à Fichier et getTheFile avec un chemin spécifié voir si cela fonctionne comme vous chargez un fichier dans une variable de fichier pensé la classe et mettre le fichier dans le lecteur tamponné dans la base de données ... si cela fonctionne après vous êtes sûr à 100% le problème est dans le loadFromFileClass –

+0

Je pense que si je peux utiliser la chaîne au lieu de BufferedReader, il résoudra ce problème je pense, mais je dois comprendre comment je peux travailler avec String au lieu de BufferedReader – meDarq