我知道如何阅读Scanner
行,但如何使用BufferedReader
?我希望能够将行读入数组。我可以将hasNext()
函数与Scanner
但不是BufferedReader
一起使用,这是我唯一不知道该怎么做的事情。如何检查何时到达文件结尾?
BufferedReader reader = new BufferedReader(new FileReader("weblog.txt"));
String[] fileRead = new String[2990];
int count = 0;
while (fileRead[count] != null) {
fileRead[count] = reader.readLine();
count++;
}
答案 0 :(得分:1)
如果到达流的末尾,则readLine()
null
返回String currentLine;
while((currentLine = reader.readLine()) != null) {
//do something with line
}
。
通常的习惯用法是更新在while条件下保存当前行的变量,并检查它是否为空:
Files.readAllLines
顺便说一句,您可能事先不知道您将阅读的行数,因此我建议您使用列表而不是数组。
如果您打算阅读所有文件的内容,可以改为使用//or whatever the file is encoded with
List<String> list = Files.readAllLines(Paths.get("weblog.txt"), StandardCharsets.UTF_8);
:
[object Object]
undefined cal
答案 1 :(得分:1)
readLine()
在到达null
后返回EOF
。
只是
do {
fileRead[count] = reader.readLine();
count++;
} while (fileRead[count-1]) != null);
当然这段代码不是推荐的阅读文件的方式,但是如果你想要按照你想要的方式(一些预定义的大小数组,计数器等)来完成它,它会显示如何完成。
答案 2 :(得分:1)
using readLine()
, try-with-resources
and Vector
try (BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\weblog.txt")))
{
String line;
Vector<String> fileRead = new Vector<String>();
while ((line = bufferedReader.readLine()) != null) {
fileRead.add(line);
}
} catch (IOException exception) {
exception.printStackTrace();
}