2016-10-01 130 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()); 
}