我想连续读取文件,我的意思是如果我找到了文件的结尾,我想先从中再次阅读。所以我正在重置流,但它无法正常工作。这是我的代码。
br = new BufferedReader(new FileReader("E:\\Abc.txt"));
while(true)
{
sCurrentLine = br.readLine();
if(sCurrentLine!=null)
System.out.println(sCurrentLine);
else
br.reset();
}
任何人都可以帮助我。
答案 0 :(得分:2)
br = new BufferedReader(new FileReader("E:\\Abc.txt"));
while(true) {
sCurrentLine = br.readLine();
if(sCurrentLine!=null) {
System.out.println(sCurrentLine);
} else {
br.close();
br = new BufferedReader(new FileReader("E:\\Abc.txt"));
}
}
因此它将使用新的BufferedReader重新启动:)
答案 1 :(得分:1)
您最好的选择可能是在BufferedReader
返回readLine()
时重新创建null
。
例如:
String filename = "[filename]";
BufferedReader reader = new BufferedReader(new FileReader(filename));
while (true) {
String line = reader.readLine();
if (line != null)
// Use line
else {
reader.close();
reader = new BufferedReader(new FileReader(filename));
}
}
这样做的好处是可以直接从文件中直接读取,而不会一次在内存中存储太多内容,如果如你所说的那样,它可能是一个问题,它包含五千行。
答案 2 :(得分:0)
初始化br.mark(100);
br
Marks the present position in the stream. Subsequent calls to reset()
will attempt to reposition the stream to this point.
参数readAheadLimit
:
readAheadLimit限制可读取的字符数 同时仍保留着商标。尝试重置流后 读取此限制或更高的字符可能会失败。限制值 大于输入缓冲区的大小将导致新的缓冲区 分配的大小不小于限制。因此价值很大 应小心使用。
以下代码将连续打印文件/home/user/temp/reader.test
BufferedReader br = new BufferedReader(new FileReader("/home/user/temp/reader.test"));
String sCurrentLine;
br.mark(100);
while(true)
{
sCurrentLine = br.readLine();
if(sCurrentLine!=null)
System.out.println(sCurrentLine);
else
br.reset();
}