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

      ... 

В этот момент Струны сек & ч должны быть равны.

Документ сканер для чтения начинается с пустой строкой и выглядит следующим образом:

asdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkdsasdkjasjkdajkdahkdjahdjadhkahdajkdajkds

Опять же, у меня есть динамический файл, который может иметь первую строку пустым и когда я сравниваю String s со строкой h они НЕ равны. nextLine() и next() пропустить первую строку, пока она остается действительным элементом.

+1

Пожалуйста, прочтите [mcve] ссылку, а затем создать и разместить один, вместе с небольшим представлением текстового файла. –

+1

Что вы пробовали? Можете ли вы отправить свой код? –

+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() метод читает лексемы разделенных whitespaces или newline символов на другом nextLine() читает строки, разделенные newline charater.

Вы можете попробовать это:

Scanner scan = new Scanner(file); 
while(scan.hasNextLine()){ 
    System.out.println(scan.nextLine()); 
} 
Смежные вопросы