タイトルとして、2つ以上の文字間のスペースを1つのスペースに置き換えようとしています。しかし、次のコードは非常に大きな入力ファイルでは機能しません。巨大な入力ファイルに対しても、どうやって動作させることができますか?単純な読み書き巨大な入力ファイルの問題
static void Main(string[] args)
{
Regex pattern = new Regex(@"[ ]{2,}"); //Pattern = 2 or more space in a string.
StreamReader reader = new StreamReader(@"C:\CSharpProject\in\abc.txt");
string content = reader.ReadToEnd();
reader.Close();
content = pattern.Replace(content, @" "); //Replace 2 or more space into a single space.
StreamWriter writer = new StreamWriter(@"C:\CSharpProject\out\abc.txt");
writer.Write(content);
writer.Close();
}
可能であれば、ファイル全体を文字列に読み込むことは間違いありません。 Streamsの重要な点は、一度に少しずつ作業することができることです。文字列のように扱うことができるように、RAMに4GBのファイルをロードする必要はありません。 – Pat
本当に正規表現を使用する必要がありますか?あなたはファイル(char by char)を読み、boolスイッチを使って空白文字を保持するかどうかを判断できます。 – Goran