我有一個很大的\ n需要用\ r \ n替換的大文本文件。對於小文本文件,我使用ReadToEnd方法將文件作爲字符串獲取,然後使用Replace方法,然後將字符串寫入文件。然而,對於一個大文件,我會得到一個OutOfMemory異常,因爲這個字符串太大了。任何幫助將不勝感激。謝謝。用大文本文件中的 r n替換 n
2
A
回答
6
private void foo() {
StreamReader reader = new StreamReader(@"D:\InputFile.txt");
StreamWriter writer = new StreamWriter(@"D:\OutputFile.txt");
string currentLine;
while (!reader.EndOfStream) {
currentLine = reader.ReadLine();
writer.Write(currentLine + "\r\n");
}
reader.Close();
writer.Close();
}
這應該可以解決您的問題。請注意,reader.ReadLine()會削減尾部的「\ n」。
1
或者,如果你需要像一個更大的緩衝區,你可以使用StreamReader.ReadBlock();
2
你可以使用Read並指定多少字節,每次讀。如以10 MB塊讀取文件。
3
DiableNoir的解決方案是正確的想法,但實現是錯誤的,它需要一些解釋。這裏有一個改進的一個:
using (var reader = new StreamReader(@"D:\InputFile.txt"))
using (var writer = new StreamWriter(@"D:\OutputFile.txt")) // or any other TextWriter
{
while (!reader.EndOfStream) {
var currentLine = reader.ReadLine();
writer.Write(currentLine + "\r\n");
}
}
您使用輸入TextReader
和輸出TextWriter
(這個可能會直接到文件或內存中的字符串)。 reader.ReadLine
將而不是返回行結束作爲行的一部分,所以你需要明確地寫(而不是使用string.Replace
,這將不會完成任何事情)。
而且,正是因爲你永遠不會看到\n
或\r
爲currentLine
一部分,該計劃是安全的,它已經產生的輸出再次運行(在這種情況下,它的輸出將是完全相同的輸入)。這不會是這種情況,如果currentLine
包括行結束,因爲它會改變\n
到\r\n
第一時間,然後使其\r\r\n
第二時間等
相關問題
- 1. 嘗試替換文件中的\ r \ n \ n但不是\ r \ n
- 2. 用\ r \ n替換文本文件中的文本
- 3. 在Linux中替換\ n與\ n \ n的文本(文件)
- 4. javascript,用\ r \ n替換\ n
- 5. 在Unix文件中用\ r \ n替換\ n
- 6. 替換\ r \ n與\ n
- 7. 替換\ n \ r換行php
- 8. 替換\ r \ n爲CSV作家\ n
- 9. 替換PowerShell中的`\ r \ n`
- 10. PHP:可以用\ n替換\ r \ n嗎?
- 11. str_replace(「\ r \ n」)替換兩次,而str_replace(「\ n」)替換一次
- 12. 使用R中的大文本文件創建n-grams
- 13. 在mht文件中替換\ n
- 14. 用「\ n」代替「\ r \ n」
- 15. 如何在所有php文件中遞歸地用\ n替換\ n \ r
- 16. 我需要\ r的\ n代替\ n的文本
- 17. 替換csv文件中的\ n
- 18. 替換\ n與崇高的文本
- 19. 將\ r \ n替換爲「」
- 20. Bash替換文件中的'\ n \ n}'字符串
- 21. 閱讀大文本文件的n行
- 22. 在文件csv中導入表mysql,換新行,更好用\ n,\ r或\ r \ n?
- 23. 如何使用vim將文字「\ n」替換爲文字「\\ n」?
- 24. 拆分文本與 '\ r \ n'
- 25. 的Python:在列表中替換\ n \ r \噸不包括起始\ n \ n和與\ n \ r \ n \噸結束
- 26. 替換\ n「用」,
- 27. 用<br />替換\ r \ n
- 28. 替換MySQL數據庫中的\ n \ r
- 29. 如何在文本文件中替換包含「\ n」的文本序列
- 30. PHP郵件中的換行符():\ n,\\ n和\ r \ n不工作
你需要在內存中生成的文件,或回磁盤? – Dialecticus