2016-10-01 35 views
-4

我寫了一個.txt文件,其中每一行都有一個含義 - 即使是空的。掃描儀的方法next()和nextLine()不能識別空行並跳轉到文本行。 我想知道是否有一種方法讓掃描儀不考慮內容而考慮所有文本行。java.util.Scanner不讀取空行

我不想使用BufferedReader,因爲我每次都使用非常小的標記。

static final String fileName = "temp.txt"; 
    try { 
      //System.out.println(Jsoup.connect(url).get()); 
      Document document = Jsoup.connect(url).get(); 
      FileWriter fileWriter = new FileWriter(fileName); 

      BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); 

      Elements names = document.select("[id^=CZ]"); 
      for (Element name : names) { 
       bufferedWriter.write(name.text()); 
       bufferedWriter.write(System.lineSeparator() + System.lineSeparator()); 
       System.out.println(name.text() + '\n'); 
      } 
      bufferedWriter.close(); 
      Scanner in = new Scanner(new File(fileName)); 
      in.next(); 
      String s = names.first().text(); 
      String h = in.next(); 

      ... 

此時Strings s & h應該相等。

文檔掃描儀讀取一個空行開始和是這樣的:

asdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkds

同樣,我有一個動態文件,可能有第一行爲空,當我比較字符串s與字符串h他們不等於。 nextLine()和next()跳過第一行,而它仍然是一個有效的元素。

+1

請閱讀[MCVE]鏈接,然後創建和文本文件的小圖示後一個,在一起。 –

+1

到目前爲止您嘗試過什麼?你可以發佈你的代碼嗎? – 2016-10-01 13:28:31

+0

無法複製:https://ideone.com/Q1Y25z – tkausl

回答

0

nextLine()是您需要的方法。 Unlinke next(),它不會通過換行符和空格跳過。

運行該示例(demo

Scanner sc = new Scanner(System.in); 
while (sc.hasNextLine()) { 
    String s = sc.nextLine(); 
    System.out.println("'"+s+"'"); 
} 
與空行輸入地看到,這些線被保留

'quick brown' 
'' 
'fox jumps' 
'over' 
'' 
'the' 
'' 
'lazy dog' 
0

next()方法讀取由上另一方面whitespacesnewline字符分隔的令牌nextLine()只讀行newline charater。

你可以試試這個:

Scanner scan = new Scanner(file); 
while(scan.hasNextLine()){ 
    System.out.println(scan.nextLine()); 
}