JavaNIO从文件中读取行
如何在java nio say nextlineio()中实现一个函数,该函数从FileChannel中增量读取下一行,因为文件可能很大,我最初的想法是读取一个大于可能存在的行的最大长度的ByteBuffer,并在需要时从FileChannel中读取(),但我看到的问题是,如何取消读取不以换行符结尾的最后一个字节序列。另外,我如何确保nextlineio()函数不会失败,因为NIOAPI是异步的。有任何帮助或已有的实现吗JavaNIO从文件中读取行,java,performance,io,nio,Java,Performance,Io,Nio,如何在java nio say nextlineio()中实现一个函数,该函数从FileChannel中增量读取下一行,因为文件可能很大,我最初的想法是读取一个大于可能存在的行的最大长度的ByteBuffer,并在需要时从FileChannel中读取(),但我看到的问题是,如何取消读取不以换行符结尾的最后一个字节序列。另外,我如何确保nextlineio()函数不会失败,因为NIOAPI是异步的。有任何帮助或已有的实现吗 谢谢,正如@EJP指出的,使用BufferedReader.readLin
谢谢,正如@EJP指出的,使用BufferedReader.readLine()很可能会获得足够的性能,除非您知道这不合适,否则我建议您保持简单
我会将整个文件映射到内存中,然后搜索换行符,一次得到一行。这避免了需要担心缓冲区大小或多次读取(或读取过多的问题)
NIO是同步的,默认情况下,文件IO是同步的(直到Java7)。要使套接字异步,必须调用一个特殊的setter。我不会。我会使用缓冲读取器。我不会将映射NIO用于任何东西,除了一个在程序生命周期内将被打开的大文件,例如一个自我实现的数据库。@EJP,非常好。我应该先问问你是否需要NIO。