2016-09-01 6 views
1

Ich versuche, eine Datei zu lesen und schreiben Sie mehrere Dateien nach dem Ändern eines kleinen Punktes.Dateien sind beim Schreiben mehrerer Dateien leer

Mein Code funktioniert beim Schreiben der ersten Datei, aber die anderen Dateien sind leere Dateien. :(

ich es denke, ist ein Problem, wenn ich bufferedwriter und filewriter, aber nicht finden kann, was das Problem ist, wenn ich einen Rat gefolgt flush von Stackoverflow zu verwenden.

Was ist das Problem in meinem Code ist

?
 FileReader fr = new FileReader(FileDir); 
     BufferedReader br = new BufferedReader(fr); 
     for (String mc: matchedContents){ 
      FileWriter fw = new FileWriter(saveFileDir+String.valueOf(matchedContents.indexOf(mc)+1)+".xml", false); 
      BufferedWriter bw = new BufferedWriter(fw); 
      while ((s = br.readLine())!=null){ 
       // check if s has matched contents 
       if (s.contains(mc)){ 
        String replacedString=""; 
        if (mc.contains("NV")) 
         replacedString = s.replace(mc, "NV("+anyItem(edgeNames)+")"); 
        else if (mc.contains("AW")) 
         replacedString = s.replace(mc, "AW("+anyItem(edgeNames)+")"); 
        bw.write(replacedString); 
        bw.newLine(); 
       } 
       else { 
        bw.write(s); 
        bw.newLine(); 
       } 
      } 
      System.out.println(mc+" end"); 
      bw.flush(); 
      bw.close(); 
      fw.close(); 
     } 
     br.close(); 
     fr.close(); 
+2

versuchen und verwenden, die auf magische Weise, was ein Debugger genannt. –

Antwort

2

Sein, weil nach der ersten Datei Ihre bufferedReader zum Ende kommt. um wieder schreiben Sie die Datei bufferedReader nachladen müssen. Also, was Sie tun müssen, ist die bufferedReader zu machen und die FileReader innerhalb der für

Schleife
for (String mc: matchedContents){ 
     FileReader fr = new FileReader(FileDir); 
     BufferedReader br = new BufferedReader(fr); 
     FileWriter fw = new FileWriter(saveFileDir+String.valueOf(matchedContents.indexOf(mc)+1)+".xml", false); 
     BufferedWriter bw = new BufferedWriter(fw); 
     while ((s = br.readLine())!=null){ 
      // check if s has matched contents 
      if (s.contains(mc)){ 
       String replacedString=""; 
       if (mc.contains("NV")) 
        replacedString = s.replace(mc, "NV("+anyItem(edgeNames)+")"); 
       else if (mc.contains("AW")) 
        replacedString = s.replace(mc, "AW("+anyItem(edgeNames)+")"); 
       bw.write(replacedString); 
       bw.newLine(); 
      } 
      else { 
       bw.write(s); 
       bw.newLine(); 
      } 
     } 
     System.out.println(mc+" end"); 
     bw.flush(); 
     bw.close(); 
     fw.close(); 
     br.close(); 
    } 

    fr.close(); 
+0

Danke !! aber 'FileReader fr = new FileReader (FileDir);' sollte auch in for loop sein .. oder, es funktioniert nicht. –

+0

@ W.Cointreau Ja, ich habe die Antwort aktualisiert –

Verwandte Themen