Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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
JavaNIO从文件中读取行_Java_Performance_Io_Nio - Fatal编程技术网

JavaNIO从文件中读取行

JavaNIO从文件中读取行,java,performance,io,nio,Java,Performance,Io,Nio,如何在java nio say nextlineio()中实现一个函数,该函数从FileChannel中增量读取下一行,因为文件可能很大,我最初的想法是读取一个大于可能存在的行的最大长度的ByteBuffer,并在需要时从FileChannel中读取(),但我看到的问题是,如何取消读取不以换行符结尾的最后一个字节序列。另外,我如何确保nextlineio()函数不会失败,因为NIOAPI是异步的。有任何帮助或已有的实现吗 谢谢,正如@EJP指出的,使用BufferedReader.readLin

如何在java nio say nextlineio()中实现一个函数,该函数从FileChannel中增量读取下一行,因为文件可能很大,我最初的想法是读取一个大于可能存在的行的最大长度的ByteBuffer,并在需要时从FileChannel中读取(),但我看到的问题是,如何取消读取不以换行符结尾的最后一个字节序列。另外,我如何确保nextlineio()函数不会失败,因为NIOAPI是异步的。有任何帮助或已有的实现吗


谢谢,

正如@EJP指出的,使用BufferedReader.readLine()很可能会获得足够的性能,除非您知道这不合适,否则我建议您保持简单


我会将整个文件映射到内存中,然后搜索换行符,一次得到一行。这避免了需要担心缓冲区大小或多次读取(或读取过多的问题)


NIO是同步的,默认情况下,文件IO是同步的(直到Java7)。要使套接字异步,必须调用一个特殊的setter。

我不会。我会使用缓冲读取器。我不会将映射NIO用于任何东西,除了一个在程序生命周期内将被打开的大文件,例如一个自我实现的数据库。@EJP,非常好。我应该先问问你是否需要NIO。