有一个txt文件里面有4千万行数据 每行数据都只有一个数 例如
12
13
29813
2380129随机读两万行 并将这两万行保存 应该怎么写代码??》

解决方案 »

  1.   

    1.先随机得到2万个行号
    2.根据随机行号,按照从小到大的行号,读取指定行的内容
    3.保存1.随即得到不重复的行号,需要System.currentTimeMillis()+Math.random 进行换算
    2.既然是不重复的行号,就没必要排序
    3.读取到map或者list的集合中,然后循环保存到file
      

  2.   

    我写了一个,我的思路是生成20000个不重复的随机数,然后读取这20000个随机数对应行的数据
    import java.io.*;
    import java.util.*;public class ReadFile 
    {
    public static void main(String[] args) throws Exception 
    {
    TreeSet<Integer> set = new TreeSet<Integer>();

    //首先生成20000个随机数到set中
    int num = 0;
    while (true)
    {
    if (set.add((int) (Math.random() * 40000000)))
    {
    num++;
    }
    if (num == 20000)
    {
    break;
    }
    }

    //根据set的数据读取响应的行数据
    BufferedReader in = new BufferedReader(new FileReader("in.txt"));
    PrintWriter out = new PrintWriter(new FileWriter("out.txt"));
    for (int i = 0; i < 40000000; i++)
    {
    String str = in.readLine();
    if (set.contains(i))
    {
    out.println(str);
    }
    }
    in.close();
    out.close();
    }
    }
      

  3.   

    没有速度要求,就用readLine()搞定。
    有速度要求的,得建立索引,然后字节读,两者速度差10倍以上。