问题描述
1.用Java读一个10以上的文本文件,需很多次读取其中一小部分内容,且每次读入的内容处理后才知道下次需读入的部分?求思路2.输出到一个新的文本文件,需输出的内容很多,必须分多次输出。当每次缓存到多大时输出,能获得最大效率?
解决方案
解决方案二:
才有人问过这问题,参考下http://topic.csdn.net/u/20100713/09/5dfd2fa1-fefe-4f2a-854b-5077b669ccd2.html
解决方案三:
1题:使用BufferedInputStream效率会不错,不过没看到你的需求。2题:可以使用BufferedOutputStream,默认情况下有btte[8192]的缓存,效率比较高。
解决方案四:
引用2楼heartraid86的回复:
1题:使用BufferedInputStream效率会不错,不过没看到你的需求。2题:可以使用BufferedOutputStream,默认情况下有btte[8192]的缓存,效率比较高。
对于第一题,需求是又一个大的文本文件,无法一次性读入内存,开始需要读入其中一行,然后经过一定计算后根据结果再去读入另一行数据。如此进行很多次,直至求出最后结果。问题在于,每次去读这个大文件时我都要从头开始读,很废时间。现在有种思路是把该大文件先分割成很多小文件。但不知分割成多大的小文件比较好。
解决方案五:
就用IO啊!
解决方案六:
大家好厉害啊。期待你们的成果。
解决方案七:
自己顶!
解决方案八:
FileChannel,至于Buffer需要多大这个根很多因素有关,一般看操作系统
解决方案九:
FileChannel可以满足你
解决方案十:
你可以用流对象的skip方法跳过一段字节继续读取
解决方案十一:
也许用MappedByteBuffer效率会高些。MappedByteBuffer就像一个窗口一样可以在你的大文件上面按照你指定的位置滑动!
解决方案十二:
强烈建议用nio,通过FileChannel可以极大提高读写效率。其中,缓冲池的大小可以根据文件的大小适当的调整。最近刚做了一个文本替换工具,替换一个60多M的文件只要5.8s(替换内容不多,数值仅供参考)。
解决方案十三:
该回复于2011-11-15 09:34:32被版主删除