2015-05-14 79 views
1

我試圖打印出文本文件的各個部分。眼下文本文件包含Java:讀取文本文件的一部分

Jack <ID 123.456> 
Doug <ID 231.345> 

這是我到目前爲止在代碼方面:

BufferedReader reader = new BufferedReader(new FileReader("File.txt")); 
    String readBuff = reader.readLine(); 
    String tempString = ""; 

    while (readBuff != null) { 
     if (tempString.equals("<ID ") && !readBuff.equals(">")) 
     { 
      tempString = readBuff; 
      System.out.println(tempString); 
     } 
     readBuff = reader.readLine(); 
    } 
    reader.close(); 

我希望這個打印出來的ID部分(即「123.456」和「231.345」),但現在它不打印任何東西。任何幫助將不勝感激。

回答

1

試試這個代碼:

FileInputStream fis = new FileInputStream(new File("File.txt")); 
BufferedReader br = new BufferedReader(new InputStreamReader(fis)); 

String line = null; 
while ((line = br.readLine()) != null) { 
    String[] parts = line.split(" "); 
    String theId = parts[2].substring(0, parts[2].length()-1); 
    System.out.println(theId); 
} 

br.close(); 
+0

完美的工作。謝謝。查找什麼子字符串的時間:P – WonderfulWonder

0

最初,tempString將爲空,因此它永遠不會等於<ID,因此您的tempString分配將不會發生。因此,我認爲這一行:if (tempString.equals("<ID ") && !readBuff.equals(">"))必須更改爲if (readBuff.contains("<ID ") && !readBuff.endsWith(">"))。這應該至少打印整個行。

爲了得到它打印ID部分,你可以簡單地在<第一split,這將產生2段的數組:JackID 123.456>。一旦你有了,你可以簡單地從第二個數組項中刪除最後一個字符並打印內容。這應該打印出你以後的ID。

0

好吧,你if條件是每一次假,

,當你在那一刻tempString包含任何與tempString比較你的字符串<ID。它爲空/空白。 第二種情況,您使用「>」檢查readBuff,而readBuff包含來自txt文件Jack <ID 123.456>的行。 你需要改變你的邏輯,

if(!readBuff.equals("")){ 
    System.out.println(readBuff); 
} 
+0

這是有道理的。我想知道爲什麼它從來沒有進入if語句。 – WonderfulWonder