2015-04-03 152 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