我写了一个.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()跳过第一行,同时它仍然是有效元素。
答案 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()
方法读取由whitespaces
或newline
字符分隔的标记nextLine()
读取由newline
字符分隔的行。
你可以试试这个:
Scanner scan = new Scanner(file);
while(scan.hasNextLine()){
System.out.println(scan.nextLine());
}