我想阅读一个包含一些字符串的文本文件,例如:
abc
def
ghi
jkl
mno
pqr
我使用while循环只读取一对并将它们存储在arraylist中。我想在遇到空行(\n
)时立即停止,例如在def
之后。但我的代码不会工作......我做错了什么?
while(!"\n".equals(sCurrentLine)) {
-- do stuff --
}
答案 0 :(得分:8)
如果你是逐行阅读,那么空行是空行(""
),而不是"\n"
这是长度为1的字符串
在这种情况下,您可能还需要检查没有更多行 BufferedReader.readLine()
返回null
答案 1 :(得分:2)
你犯了一个大错:你假设换行符是\n
,这并不总是正确的。根据操作系统的不同,它可以是CR
,LF
或CRLF
。
您可以按照自己的方式进行检查,但是您必须针对所有这三种可能性进行检查。
您还可以使用String.trim()
,然后比较字符串"".equals(var.trim())
答案 2 :(得分:2)
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);
}
}
}
答案 3 :(得分:1)
你可以做这样的事情
假设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
}
希望这有帮助。
答案 4 :(得分:0)
您应该使用System.getProperty("line.separator")
而不是使用系统相关的字符串。