我要从一个文本文件中提有用的数据
文本文件200多MB
是不是可以建一个缓存来把有用的数据一段一段的提出来,请问该怎么做?

解决方案 »

  1.   

    呵呵,200MB而已...
    JAVA中可以使用内存映射文件来操作大文件.
    最大可达2GB.
    下面是个简单的示例,更具体的自己看Java API DOCS或相关资料
    import java.io.*;
    import java.nio.*;
    import java.nio.channels.*;
    public class LargeMappedFiles {
      static int length = 0x8FFFFFF; // 128 Mb
      public static void main(String[] args) throws Exception {
        MappedByteBuffer out = 
          new RandomAccessFile("test.dat", "rw").getChannel()
          .map(FileChannel.MapMode.READ_WRITE, 0, length);
        for(int i = 0; i < length; i++)
          out.put((byte)'x');
        System.out.println("Finished writing");
        for(int i = length/2; i < length/2 + 6; i++)
          System.out.print((char)out.get(i));   //read file
      }
    } ///
      

  2.   

    可以用RandomAccessFile配合多綫程,速度快但是系統开销相对大.
    我blog里有一个类似的程序,你可以参考一下
      

  3.   

    建议楼主看看<Thinging in JAVA>的 IO那章.
    利用内存映射文件操作大文件的效率是用普通方法操作大文件的10倍以上.<Core Java>里面也有过对比
      

  4.   

    多谢大家指点,会努力学习JAVA的!多谢flushtime() 跟据你的代码我再去认真学习一下,我是个初学者.多谢,多谢!