从文件中删除条目(C#StreamWriter类)

时间:2011-12-20 06:33:07

标签: c# streamwriter

我有一个包含多个文本条目的文件,比如说

一个
2个
3

现在,我需要删除其中一个条目,说“两个”。我正在使用StreamReader和StreamWriter类。为了删除,首先,我使用StreamReader类将文件的内容读入一个字符串,用“”替换读取字符串中的“two \ r \ n”然后,我使用StreamWriter将此字符串写入文件类。但是,由于新写入的字符串的长度即“一个\ r \ nthree \ r \ n”小于原始字符串,即“一个\ r \ n \ n \ n \ r \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \”,前几个字符得到被覆盖,接近结尾的人物仍留在那里,产生“一个\ r \ nthree \ r \ n \ n \ n \ r \ n \ 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();
    }
}

1 个答案:

答案 0 :(得分:2)

您可以在打开输出文件时将FileMode.Open更改为FileMode.Create来解决问题。那就是:

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

这将覆盖以前的文件。