2011-12-20 5 views
1

からエントリを削除し、今、私はエントリのいずれかを削除する必要がは、私はいくつかのテキストエントリを含むファイルを持っているファイル(C#StreamWriterクラス)

を言います「2つ」と言います。私はStreamReaderクラスとStreamWriterクラスを使用しています。削除するには、まずStreamReaderクラスを使用してファイルの内容を文字列に読み込み、読み込み文字列の「two \ r \ n」を「」に置き換えてから、この文字列をStreamWriterを使用してファイルに書き込みますクラス。しかし、新しく書かれた文字列、すなわち "one \ r \ nthree \ r \ n"の長さが元の文字列、すなわち "one \ r \ ntwo \ r \ nthree \ r \ n"よりも小さいので、上書きされ、最後の文字はそこにとどまって "one \ r \ nthree \ r \ nree \ r \ n"になります。簡単な問題のように見えますが、それは私が立ち往生しています。何か案は?

userには、削除するエントリが含まれています。

string all = ""; 
using (IsolatedStorageFileStream isoStream = store.OpenFile("user_list", FileMode.Open)) 
{ 
    using (StreamReader sr = new StreamReader(isoStream)) 
    { 
     all = sr.ReadToEnd(); 
     all = all.Replace(user + "\r\n", ""); 
    } 
} 
using (IsolatedStorageFileStream isoStream = store.OpenFile("user_list", FileMode.Open)) 
{ 
    using (StreamWriter sw = new StreamWriter(isoStream)) 
    { 
     sw.Write(all); 
     sw.Flush(); 
    } 
} 

答えて

2

あなたは、出力ファイルを開いているときFileMode.CreateFileMode.Openを変更することで問題を解決することができます。つまり:

using (IsolatedStorageFileStream isoStream = 
    store.OpenFile("user_list", FileMode.Create)) 

これは前のファイルを上書きします。

関連する問題