一个100M的文本文件通常办法,按行读取的话,一般不到2万行,内存就溢出了,
有什么办法每处理1万行,就清除一下内存,然后再读取下一个一万行呢,
或其它别的办法可以办到的也行,只要按行读取,内存不溢出,就可以了

解决方案 »

  1.   

    那就读1w行数据,放入一个集合,然后检验数据,导入数据库,最后给集合一个null,然后强制启动垃圾回收器来清理垃圾(System.gc())。
    楼主可以试试!
      

  2.   

    贴一下代码吧,不会出现你说的问题的。http://www.360doc.com/content/10/0803/13/2159920_43361828.shtmlhttp://yoctor.blog.163.com/blog/static/88551698200871111230444/
      

  3.   

    要一行一行检查数据的话会不会很慢的。。不知道这样写符不符合你所说的:package csdn.javase.nioEx.ex2;
    import java.io.*;
    /**
     * 
     * @author supercodingman
     * @version 1.0
     */
    public class BasicFileOutput {
    static String file1 = "d:\\BasicFileReader.txt";
    static String file2 = "d:\\BasicFileWriter.txt";
    public static void main(String[] args) {
    try{
    BufferedReader in = new BufferedReader(
    new FileReader(file1),10000);//10000不是指行数,是指缓冲区的大小
    PrintWriter out = new PrintWriter(
    new BufferedWriter(new FileWriter(file2),10000));//同上
    int lineCount = 1;
    String s ;
    while ((s = in.readLine()) != null){
    System.out.println(s);
    //对s进行处理,我这里是把它写到另一个文件里去
    out.println(s);
    }
    in.close();
    out.close();
    }catch(FileNotFoundException e){
    System.out.println("File Not Found!");
    }catch(IOException e){
    System.out.println("IOException!");
    e.printStackTrace();
    }finally{
    System.out.println("Done");
    }
    }
    }
      

  4.   

    要一行一行检查数据的话会不会很慢的。。不知道这样写符不符合你所说的:
    package csdn.javase.nioEx.ex2;
    import java.io.*;
    /**
     * 
     * @author supercodingman
     * @version 1.0
     */
    public class BasicFileOutput {
    static String file1 = "d:\\BasicFileReader.txt";
    static String file2 = "d:\\BasicFileWriter.txt";
    public static void main(String[] args) {
    try{
    BufferedReader in = new BufferedReader(
    new FileReader(file1),10000);//10000不是指行数,是指缓冲区的大小
    PrintWriter out = new PrintWriter(
    new BufferedWriter(new FileWriter(file2),10000));//同上
    int lineCount = 1;
    String s ;
    while ((s = in.readLine()) != null){
    System.out.println(s);
    //对s进行处理,我这里是把它写到另一个文件里去
    out.println(s);
    }
    in.close();
    out.close();
    }catch(FileNotFoundException e){
    System.out.println("File Not Found!");
    }catch(IOException e){
    System.out.println("IOException!");
    e.printStackTrace();
    }finally{
    System.out.println("Done");
    }
    }
    }