2015-04-03 150 views
0

我正在创建一个程序,该程序通过500k +行文本进行排序,并将某些字符串拉出来写入干净版本。在特定点将文本写入文件

当我得到完整的新干净行数组写入文件时,我很好奇,是否有一种方法可以使用线程并准确告诉代码在哪个行号或索引处开始写入文本文件。

有效地使用多个线程同时编写我的文本的部分,保持编译的原始顺序。

一个简单的例子就是,比方说,我想开始在文本文件的第125923行写文本,不管已经存在什么,如果有的话。

谢谢

+1

反正一个文件只能由一个线程访问。你在顶部创造了很多开销,跟踪不断变化的行号等等。所以你肯定会放慢速度而不是获得一些,相比之下,只是将文本逐行传输到文件中。你有没有尝试过简单的方法,发现它太慢? – Jens 2015-04-03 06:34:09

+1

您是否尝试覆盖125923rd行之外的所有内容?你的描述有些不清楚。你能给我们一个简单的例子,只有10行的文件吗?向我们显示原始文件,以及您想要的结果。 – 2015-04-03 06:35:34

+1

@Jens“文件一次只能被一个线程访问”?不知道你从哪里得到这些信息,但是你真的可以从多个线程甚至多个进程访问同一个文件......(评论的其余部分实际上带来了可能降低性能的非常有效的点)。 – 2015-04-03 06:36:19

回答

1

您CA不写一行没有wrting整个文件,除非它是原线相同lenght。顺便说一句,如果我的理解正确,你想使用多个线程写入一个单一的文件,但不幸的是,这是不可能在你的情况下

+1

这不是完整的事实。您可以使用C#处理随机文件,但是:记录必须具有相同的大小(=固定长度的记录)。 – 2015-04-03 06:43:17

+0

确实我写了,除非它是原始行相同长度 – Sid 2015-04-03 06:45:43

+0

我的不良我写了“原始文件”,而不是“原始行”,谢谢报告! – Sid 2015-04-03 06:46:29