大文字のテキストファイルがあります。大量の\ nを\ r \ nで置き換える必要があります。小さなテキストファイルでは、ReadToEndメソッドを使用してファイルを文字列として取得し、Replaceメソッドを使用して文字列をファイルに書き込みました。しかし、大きなファイルでは、文字列が大きすぎるためOutOfMemory例外が発生します。どんな助けでも大歓迎です。ありがとう。大文字のファイルで nを r 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
それとも、より大きなバッファのような必要がある場合、あなたはあなたがReadを使用し、各時間を読み取るためにどのように多くのバイト数を指定することができStreamReader.ReadBlock();
2
を使用することができます。 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");
}
}
あなたは(この1つは、ファイルまたはメモリ内の文字列に指示される場合があります)、入力と出力のためのTextWriter
ためTextReader
を使用しています。 reader.ReadLine
は、行末を行の一部として返すので、明示的に書き込む必要があります(string.Replace
を使用する代わりに、何も実行できません)。
あなたがcurrentLine
の一部として\n
または\r
を見ることはありませんので、また、まさに、このプログラムは、それが生産している出力で再度実行しても安全である(この場合には、その出力がその入力に全く同じになります)。 currentLine
は行末が含まれている場合、それは、\r\n
に初めて\n
を変更し、それ\r\r\n
二度目になるだろうので、これは、ケースではないでしょうなど
関連する問題
- 1. \ r \ nを ""に置き換えます
- 2. WCF 3.5 REST - \ r \ nを\ nに置き換えたデータメンバ
- 3. Unixファイルで\ nを\ r \ nに置き換えてください。
- 4. FART.exeを使用して\ r \ n(リテラル)を\ nに置き換える方法
- 5. Vim regexをn文字で置き換えます。
- 6. php文字列を "invisible chars"(\ n)に置き換えます。
- 7. \ r \ n、\ n、\ tを "\"と置き換えるGroovyスクリプト
- 8. golangのN番目の文字列を置き換えます。
- 9. \ r \ n \ r \ n文字列をプレーンテキストに変換する
- 10. テキストファイルのテキストを\ r \ nに置き換えます。
- 11. Sedコマンドは、数字+文字を数字+ \ n +文字に置き換えます。
- 12. 複数の\ r \ n(CRLF)を1つに置換する\ r \ n
- 13. for-loop in R、n番目とn番目の+ 1を置き換えます。
- 14. 文字列をリストに変換するには、文字列 '\ n \ n \ n \ n \ n'で分割しますか?
- 15. \ r \ nを<br />に置き換えます
- 16. を置き換える ';' '; \ n'
- 17. Sublime Text 2 RegEx nをn + 1に置き換えます
- 18. Pythonの:リストで\ nを\ rをする\ tを置き換えるものを開始\ N \ Nを除くと、\ nを\ rを\ n個の\ tので
- 19. 大文字Nに#
- 20. PowerShellで `、\ r \ n`を置換する
- 21. Awkはn番目の文字を空白の値で置き換えます
- 22. "\ N"を正規表現に置き換えます
- 23. 文字列の\ nをMatlabの新しい行に置き換えます。
- 24. \ n文字で最大n文字の文字列を分割します。
- 25. 変換の\ r \ n文字は3
- 26. '\' 置き換えるnはjavascriptの
- 27. \ n(改行)をbashの空白に置き換えます。
- 28. n番目の文字を置き換える、与えられたシンボル
- 29. のpython3、「\ n」や「『『の可能ユーザの入力文字が、』\\ nを『と』\\に置き換え』」
- 30. javaを\\ r \\ nに置き換えて配列に入れます
あなたは背中に結果のメモリ内のファイル、またはが必要ですディスク? – Dialecticus