FUD*_*FUD 5 java io performance nio
我如何在java中实现一个函数nio说nextLineNio(),它会逐渐从FileChannel读取下一行,因为文件可能很大,我最初的想法是读入一个大小大于行的最大长度的ByteBuffer,它可能存在并读取如果需要,来自FileChannel的(),但我看到的问题是如何取消读取不以换行结尾的最后一个字节序列.另外,我如何确保nextLineNio()函数不会失败,因为nio api是异步的.任何帮助或已经存在的实现?
谢谢
正如 @EJP 指出的那样,使用 BufferedReader.readLine() 很可能会获得足够的性能,除非您知道这不合适,否则我建议您保持简单。
http://vanillajava.blogspot.com/2011/01/how-slow-can-you-readwrite-files-in.html
我会内存映射整个文件并搜索换行符以一次获取一行。这避免了担心缓冲区大小或多次读取(或读取过多的问题)
NIO默认是同步的,文件 IO 仅是同步的(直到 Java 7)。要使套接字异步,您必须调用特殊的设置器。