我想阅读一个包含一些字符串的文本文件,例如:
abc
def
ghi
jkl
mno
pqr
我正在使用一个while循环来读取一对并将它们存储在一个arraylist中。我想在遇到空行 ( \n
) 时立即停止,例如在def
. 但是我的代码不起作用......我做错了什么?
while(!"\n".equals(sCurrentLine)) {
-- do stuff --
}
我想阅读一个包含一些字符串的文本文件,例如:
abc
def
ghi
jkl
mno
pqr
我正在使用一个while循环来读取一对并将它们存储在一个arraylist中。我想在遇到空行 ( \n
) 时立即停止,例如在def
. 但是我的代码不起作用......我做错了什么?
while(!"\n".equals(sCurrentLine)) {
-- do stuff --
}
如果您正在逐行阅读,则空行是空行(""
),而不是"\n"
长度为 1 的字符串
您可能还需要检查在这种情况下是否没有更多行BufferedReader.readLine()
返回 null
你犯了一个大错误:你假设换行符是\n
,这并不总是正确的。根据操作系统,它可以CR
是LF
或CRLF
。
您可以按照自己的方式继续检查,但您必须对照所有这三种可能性进行检查。
您也可以使用String.trim()
然后比较字符串"".equals(var.trim())
while(!"".equals(sCurrentLine)) {
-- do stuff --
}
这将帮助你
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class AddToArrayList {
public static void main(String[] args) throws IOException {
Scanner sc=new Scanner(new File("D:\\Text.txt"));
ArrayList<String> str=new ArrayList<>();
String s=null;
while (sc.hasNext()){
s=sc.nextLine();
if(s.equals("")){
continue;
}
str.add(s);
}
}
}
你可以做这样的事情
假设 1,您要添加对跳过空行。
String line = null;
while ((line = br.readLine()) != null) {
//when we encounter a empty line we continue
//the loop without doing anything
if (line.trim().isEmpty()) {
continue;
}
//add to list
}
假设2,你想在第一个空行退出
String line = null;
while ((line = br.readLine()) != null) {
//when we encounter a empty line we exit the loop
if (line.trim().isEmpty()) {
//break the loop
break;
}
//add to list
}
希望这可以帮助。
您应该使用System.getProperty("line.separator")
而不是使用系统相关的字符串。