項目需要,我寫了個程序。
邏輯很簡單。 有15000個不同的字符串、、
要去大概4000個文件中去匹配。。替換成固定編碼格式。。。
1個字符串。進去。運行1個文件替換。需要0.005秒。。最普通的代碼寫法。。讀出。修改。寫入。
這樣循環(huán)替換完4000個。。需要20秒一次。。。(4000個文件其實只有一兩個是有那個字符串的。。但你不知道哪兩個)
但是。。這樣的過程需要15000次。。因為有15000個不同的字符串在等著。。。
這樣我計算了下。。。需要3.4天的樣子。。我掛在了服務(wù)器上運行。。但還是等不及。。 急求高手解決此問題。。
for (int m = 0; m < files.Count; m++)//files.Count有四千。。、
{ try
{ StreamReader sr = new StreamReader(files[m].ToString(), Encoding.GetEncoding("utf-8"));
string str = sr.ReadToEnd(); sr.Close(); //替換文本
?if (str.Contains(oldCon))
{ str = str.Replace(oldCon, newCon); have = true; } //更改保存文本
StreamWriter sw = new StreamWriter(files[m].ToString(), false);
sw.WriteLine(str); sw.Close(); }
catch { continue;//某文件如有問題。繼續(xù)。。文件列表已經(jīng)過處理。不會有問題。。、 } }
5 回答

GCT1015
TA貢獻1827條經(jīng)驗 獲得超4個贊
4000個文件的大小是多少?可以考慮加內(nèi)存里,或者分幾批加入內(nèi)存。先讀所有文件到HashTable里,并對應(yīng)各文件名或其它防止重復(fù),替換字段串在內(nèi)存中保存,完事后再保存,但是要防止數(shù)據(jù)丟失。
也可以用多線程,開N個線程去處理這些操作。

慕慕森
TA貢獻1856條經(jīng)驗 獲得超17個贊
應(yīng)該反過來處理吧。
?
一個文件處理完1.5W個字符串之后,換下一個文件
就是一個文件一個文件的處理
?
一個字符串在4000個文件處理,相當于要把4000個文件打開1.5萬次,并加載到內(nèi)存中
- 5 回答
- 0 關(guān)注
- 470 瀏覽
添加回答
舉報
0/150
提交
取消