Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何重置BufferedReader的位置?_Java_Android_Bufferedreader - Fatal编程技术网

Java 如何重置BufferedReader的位置?

Java 如何重置BufferedReader的位置?,java,android,bufferedreader,Java,Android,Bufferedreader,iam使用BufferedReader从文件中读取行。当我从文件中读取所有行时,我想从头开始重新读取该文件,我如何才能这样做?BufferedReader.mark()和BufferedReader.reset()工作不正常。这是我的代码 FileReader fR = new FileReader(this.sTargetPath); final BufferedReader vcfBuffer = new BufferedReader(fR); //

iam使用BufferedReader从文件中读取行。当我从文件中读取所有行时,我想从头开始重新读取该文件,我如何才能这样做?
BufferedReader.mark()
BufferedReader.reset()
工作不正常。这是我的代码

FileReader fR = new FileReader(this.sTargetPath);
            final BufferedReader vcfBuffer = new BufferedReader(fR);
        //  vcfBuffer.mark(0);
                Boolean nextLine = true;
                while (nextLine) {
                    try {
                        String line = vcfBuffer.readLine();
                        }
                    } catch (IOException e) {
                        nextLine = false;
                    }
                }
            }

            vcfBuffer.reset();
如何重置BufferedREader位置?谢谢你的帮助,

医生说:(我的重点):

参数:

readAheadLimit-限制在保留标记的同时可以读取的字符数。尝试重置流 在读取达到或超过此限制的字符后,可能会失败。A限制 值大于输入缓冲区的大小将导致新的缓冲区 要分配的大小不小于限制。如此之大 应谨慎使用这些值

如果使用0作为参数调用它,那么只要从读取器中再读取一个字节,就可能无法重置


解决方案是以文件的长度作为参数调用mark方法。但当然,这将导致在内存缓冲区中读取整个文件。如果您不想这样做,请关闭读卡器,然后重新打开一个新的BufferedReader。

再次创建一个新的BufferedReader对象。。或者使用
RandomAccesFile
seek(0)
方法。除了创建另一个读卡器之外,没有其他方法了吗?我不认为这是个好主意,它可以工作,但效率不高,对吗?我认为你可以在阅读第一行之前创建一个标记,然后你可以稍后使用reset()方法返回到这一点,不过我以前没有尝试过。如果你读的内容超过了内部缓冲区所能容纳的内容,则
BufferedReader
的“标记”无效。将文件内容读取并存储为
char[]
数组,并使用
CharArrayReader
而不是
FileReader
作为
BufferedReader
的输入,或者增加缓冲区的大小。使用BufferedReader总是很快,但占用的内存很少。只要能用就行。我不知道如何设置开始输入流。