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

问题描述

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

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

解决方案

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

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

解决方案二:

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

解决方案三:

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

解决方案四:

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会自动的一行一行的读取的;
不是随机的行数时,不要把内容写入的另一个记事本,直到读到指定的行时,再将此行内容写入的另一个记事本中,然后删除此行内容。

时间: 2024-05-17 18:55:06

c#-如何将多个txt文本合并在一个文本里面并且完全打乱行序的相关文章

Beyond Compare文本合并会话菜单怎么操作

  Beyond Compare 是一款不可多得的专业级的文件夹和文件对比工具,在了解它强大的文件夹对比的功能之前,让我们先来认识一下它的文本合并会话菜单. 首先打开Beyond Compare软件,在新建会话中选择文本合并,打开文本合并操作界面.分别点击"文件夹浏览"按钮,打开需要合并的文本,Beyond Compare文本合并可以支持3个文本同时合并. 文本合并操作界面示例 菜单介绍: 菜单--"会话":会话菜单包括新建会话,打开.保存.另存为.清除会话,会话设

Mac系统下.txt格式的纯文本怎么保存?

  .txt是个用途广泛的纯文本格式,在ms系统上经常用到.然而Mac新手发现,在骄傲的苹果系统上,保存.txt似乎不太可能,它只支持.rtf的自家格式.其实,Mac做的很好,你可以保存为.txt的纯文本格式,而不必强行冒着文本乱码的风险修改后缀. 1.打开文本编辑的app 2.选择新建文本 3.然后按快捷键shift+command+T,让文本成为纯文本格式 4.或者在顶部菜单选择格式一项,保存为纯文本格式,如果想保存为多信息文本,重复此快捷键 5.最后按command+s保存文档 6.保存之

Flash MX 精彩文本篇(滚动文本框和动态文本)

动态|文本框 滚动文本框 Component为FlashMX新增特性.引进了组件(Component)的概念后,可定制常见的程序界面,包括滚动条.超文本域.输入按钮.单选按钮.多选按钮.列表和复选框.这些大大加速了开发进度.现在来看看如何用组件定制滚动文本框. 1.选择Window->Components,出现属性面板.(如图9) 其中的ScrollBar就是我们要用到的组件. 2.拖动一个组件ScrollBar到场景上.如果让其和文本框吸附在一起的话,会自动变大和文本框一样长.吸附的方法是点击

perl-怎么编程实现批处理文本,使文本内容减少10%,20%,30%?

问题描述 怎么编程实现批处理文本,使文本内容减少10%,20%,30%? 在一个目录下有几百个txt文件,里面是拼音,每个拼音之间空格相隔,用perl或者Python和bat都行,貌似这几个没有这种删除的方法,不是删除也行,提取90%,80%,70%到新txt文件也行 解决方案 求人不如求己,自己早就弄出来了 解决方案二: google python 哈夫曼算法 解决方案三: 关键你删除有要求么 或者说 数据提取要不要随机就是说你提出来的数据是随机从文件得到的如果只要满足删除10%这个不难的(一

java-Java 读文本A,文本中有引入文件B,然后根据文件名B重新进行读入操作,结果放入String里

问题描述 Java 读文本A,文本中有引入文件B,然后根据文件名B重新进行读入操作,结果放入String里 import b.txt; <appender name="file" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="${logPath}/error.log" /> <param name=&

VB6.0语言Label双击变成文本框,文本框离开变成LabelLabel双击变成文本框

问题描述 VB6.0语言Label双击变成文本框,文本框离开变成LabelLabel双击变成文本框 Label双击变成文本框,文本框离开变成LabelLabel双击变成文本框,文本框离开变成Label 解决方案 可以做一个label一个textbox叠放在一起,然后设置zorder来设置谁在前面. 解决方案二: 不清楚你描述的是什么问题 解决方案三: 我来帮LZ完善需求描述!!!双击Label的时候,Label控件变成文本框(也就是出现一个文本框和Label控件一样大小的,在Label的位置上)

文本框随文本的长度而增长的方法

文本框随文本的长度而增长的方法 <!Doctype HTML PUBLIC "-//W3c//DTD Html 1.0 Transitional//EN"> <html> <head> <title>文本框随文本的宽度而增长</title> </head> <script type="text/javascript"> function changeInputlength(curso

实现文本框随文本的长度而增长

当我们在固定大小的文本框输入的文字超出显示限制的时候,文本就不能全不显示了,有没什么办法让文本框随文本的长度而改变呢 ? <!Doctype HTML PUBLIC "-//W3c//DTD Html 1.0 Transitional//EN"> <html> <head> <title>文本框随文本的宽度而增长</title> </head> <script type="text/javascri

论锚文本与纯文本外链 锚文本难发纯文本有量

当今的SEO界,真可谓鱼龙混杂,原因很简单,这看上去是一个没有规则的行业,只要会扯淡几句,扯淡几个理论也能被尊封为"大师"!写下这篇文章的目的是前几天看到一个锚文本与纯文本对比文章,也便想说说自己的几句. 个人认为锚文本依旧是最重要的一种外链形式.这就得从外链原理谈谈,当蜘蛛抓取一个页面后,进行页面分析时,会将a标签中的src属性拿走(锚链接),并且拿走文本(锚文字),从而使得程序从统计学上,对网站主题进行统计,从而得出页面主题(与哪些词相匹配).若使一段纯URL网址在,那也只是增加了