2016-06-14 10 views
2
   String str = ""; 
      try { 

       BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath())); 
       while (br.readLine() != null) { 
        str += br.readLine(); 
       } 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      String replace = str.replace("HTTP Request: ", "") 
        .replace("Resource URL: ","") 
        .replace("Attribute\t\tDescription", "| Attribute | Type | Description |<P>|----|----|<P>") 
        .replace("Data Type | Max Length | Requirement |", "") 
        .replace("N/A", "Object") 
        .replace("String", "| String") 
        .replace("255 |", "") 
        .replace("Required", "**Required**") 
        .replace("Optional", "**Optional**") 
        .replace("Request Example <P>", "") 
        .replace("Response Example <P>", "Nothing"); 

      PrintWriter pw = null; 

Der BufferedReader die ersten 3 Zeilen ignoriert und liest/den Rest umwandelt. Ich bin mir nicht sicher, was das Problem ist. Ich habe andere StackOverflow-Lösungen ausprobiert, aber keiner von ihnen scheint zu funktionieren!BufferedReader Lese nicht gesamte Textdatei

+0

Haben Sie den Inhalt von 'str' oder von' replace' überprüft? –

+0

Ja, ich sysout'd str und es druckt ohne die ersten 3 Zeilen. –

Antwort

4

Das Problem ist hier:

while (br.readLine() != null) 

Die Zeit, die Sie prüfen, ob die br.readLine() nicht null ist, dass Sie bereits die diese line.To beheben gelesen haben, können Sie versuchen, die folgenden:

String line = br.readLine(); 
while (line != null){ 
    str +=line; 
    line = br.readLine(); 
} 
+0

Diese Lösung hat funktioniert! –

+0

@Suhail Prasathong Ich bin froh, dass ich geholfen habe, aber denke daran, eine Lösung zu akzeptieren, um die Frage zu beenden, sie muss nicht meine sein. – theVoid

0

theVoid bereits gesagt, welches Problem eine Lösung gibt.

In den Fällen, in denen cinditional Anweisung iterative Funktionen sind, ich

do{ 
    //task 
    //Iterate and store result in var, like in your case 
    var = br.readLine(); 
}while(var != null/*check on var rather than executing iteration*/); 
2

Sie den Rückgabewert von br.readLine() nur verwenden, immer lieber überprüfen, während Sie sollen es als gut behandeln, hier ist der gemeinsame Code:

StringBuider buffer = new StringBuilder(); 
try (BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()))) { 
    String line; 
    while((line = br.readLine()) != null) { 
     buffer.append(line); 
    } 
}