2011-06-18 92 views
2

我一直在研究如何做到這一點,並變得有點困惑,我已經嘗試到目前爲止與掃描儀,但似乎並沒有保留換行符,我不知道如何使它確定如果一行是一條線打破。如果有人有任何建議,我將不勝感激。我一直在使用掃描儀類,但不知道如何檢查線是否是新線。謝謝Java解析文本文件並保留換行符?

for (String fileName : f.list()) { 

      fileCount++; 

      Scanner sc = new Scanner(new File(f, fileName)); 
      int count = 0; 
      String outputFileText = ""; 

      //System.out.println(fileCount); 

      String text=""; 
      while (sc.hasNext()) { 

       String line = sc.nextLine(); 
      } 
} 
+1

你究竟是什麼意思,檢查行是否是新行? Scanner.nextLine()已經將文件分解爲多行文件,因此您只需掃描每行就可以找到值等。 – donnyton

+0

如果您使用的是BufferedWriter,則還可以使用.newline方法: http://stackoverflow.com/questions/9199216/strings-written-to-file-do-not-preserve-line-breaks –

回答

2

如果你只是想讀取文件,我會建議使用LineNumberReader來代替。

LineNumberReader lnr = new LineNumberReader(new FileReader(f)); 
String line = ""; 
while(line != null){ 
    line = lnr.readLine(); 
    if(line==null){break;} 
    /* do stuff */ 
} 
+0

我需要逐行閱讀它,然後我正在做一些事情與行檢查值(使用正則表達式)..謝謝我會看看'LineNumberReader' – Rick

+0

正如查克指出,超類BufferedReader提供了類似的功能。 (我只是想知道如果我必須編寫一條錯誤消息,我就知道自己在做什麼)。 – Darien

+0

所以如果它提取換行符(例如'\ n'),我可以將它傳遞給輸出字符串我是創造? – Rick

0

您可能想要使用BufferedReader#readLine

+0

BufferedReader#readLine的Javadoc特別指出刪除了換行符。 –

1

即使該行是空字符串,Java的掃描器類也已將其拆分爲多行。你只需要再次掃描以獲得你的值:

Scanner lineScanner; 
while(sc.hasNext()) 
{ 
    String nextInputLine = sc.nextLine(); 

    lineScanner = new Scanner(nextInputLine); 

    while(lineScanner.hasNext()) 
    { 
     //read the values 
    } 
}