java.util.Scanner没有读取空行

时间:2016-10-01 13:24:42

标签: java file java.util.scanner bufferedreader readfile

我写了一个.txt文件,其中每行都有意义 - 甚至是空行。扫描仪的方法next()和nextLine()不识别空行并向右跳到带有文本的行。 我想知道扫描程序是否有办法考虑所有文本行,无论内容如何。

我不想使用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

同样,我有一个动态文件可能第一行为空,当我将String s 与String h 进行比较时,它们不相等。 nextLine()和next()跳过第一行,同时它仍然是有效元素。

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

next()方法读取由whitespacesnewline字符分隔的标记nextLine()读取由newline字符分隔的行。

你可以试试这个:

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