我想從每個行上的一個字大文本文件讀取,並將所有的值到一個SQL數據庫,一個小文本文件這工作正常,但當我有一個更大的文本文件,比如說我耗盡內存的30萬行。從c#中的大文本文件中讀取導致內存泄漏
避免這種情況的最佳方法是什麼?是否有辦法只讀取文件的一部分,將其添加到數據庫中,然後將其從內存中移出並移至下一部分?
這裏是我到目前爲止的代碼:
string path = Server.MapPath("~/content/wordlist.txt");
StreamReader word_stream = new StreamReader(path);
string wordlist = word_stream.ReadToEnd();
string[] all_words = wordlist.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
我再通過陣列添加每個值的數據庫循環,但是當文件是大它根本不工作。
使用這種方法,它可以處理一個小文本文件,但與大文件我已離開頁面加載10分鐘,沒有結果 – wazzaday
使用BufferedStream。我相應地更新了我的答案。這將有希望足夠快。 – elgonzo
似乎稍稍加快了這一過程,但它仍需要大約3個小時才能處理所有數據並插入到數據庫中。 – wazzaday