1. 用Java读一个10以上的文本文件,需很多次读取其中一小部分内容,且每次读入的内容处理后才知道下次需读入的部分?求思路2. 输出到一个新的文本文件,需输出的内容很多,必须分多次输出。当每次缓存到多大时输出,能获得最大效率?

解决方案 »

  1.   

    才有人问过这问题,参考下http://topic.csdn.net/u/20100713/09/5dfd2fa1-fefe-4f2a-854b-5077b669ccd2.html
      

  2.   

    1题:使用BufferedInputStream效率会不错,不过没看到你的需求。2题:可以使用BufferedOutputStream,默认情况下有btte[8192]的缓存,效率比较高。
      

  3.   

    FileChannel,至于Buffer需要多大这个根很多因素有关,一般看操作系统
      

  4.   

    你可以用流对象的skip方法跳过一段字节继续读取
      

  5.   

    也许用MappedByteBuffer效率会高些。
    MappedByteBuffer就像一个窗口一样可以在你的大文件上面按照你指定的位置滑动!
      

  6.   

    强烈建议用nio,通过FileChannel可以极大提高读写效率。其中,缓冲池的大小可以根据文件的大小适当的调整。
    最近刚做了一个文本替换工具,替换一个60多M的文件只要5.8s(替换内容不多,数值仅供参考)。