如何将多个txt文本合并在一个文本里面并且完全打乱行序

我现在有几个个txt文件,每个文件里面都是一行一行的数据,单个文件差不多1G, 我现在想把他们合并在一个txt文件中,并且打乱他们的行序,我原本想各个文件先读取几行,放在一个数组里面打乱写入新的文本,接着在读取这些文件接下来的几行,还是合并打乱写入,知道全部读完,但是我不知道怎么去控制这个每次读取那些行

你的想法挺好的,读取的话用StreamReader会自动的一行一行的读取的;

可以生成一个随机数作为行数,读完一行就把这行删掉

文本文件是没有办法随机读写的,如果你能得知每行的最大字符数(假定用maxcharsnum表示),你可以先将这些文本文件转换成随机文件(也就是每行文字放入二进制文件n*maxcharsnum起始的位置)。

有了随机文件,你可以用如下方式打乱它们的序号:
int[] rndlines = Enumerable.Range(0, 总行数).OrderBy(x => new Guid.NewGuid()).ToArray();
然后根据这个乱序的行号去那个随机文件中快速定位每一行,输出。

String sFilePath = "";
FileReader aFileReader = new FileReader(new File(sFilePath));
BufferedReader bfRedaer = new BufferedReader(aFileReader);
String sOneLine = null;

    //定义计数器
    int nLineCount=0;
    ArrayList tempLines = null;
    while ((sOneLine = bfRedaer.readLine()) != null) {

        if(tempLines==null){
            tempLines = new ArrayList(10);
        }
        tempLines.add(sOneLine);
        nLineCount ++;

        //这里对10的倍数行进行处理,如果最后一行不是10的倍数,没有处理的情况
        if(nLineCount%10==0){
            //提交给其他方法进行打乱排序写入到另一个文件
            tempLines = null;
        }
    }

    //对最后一行不是10的倍数进行处理
    if(tempLines!=null){
        //进行处理
    }

可以生成一个随机数作为行数,读取的话用StreamReader会自动的一行一行的读取的;
不是随机的行数时,不要把内容写入的另一个记事本,直到读到指定的行时,再将此行内容写入的另一个记事本中,然后删除此行内容。