【问题标题】:Delete an entry from a file (C# StreamWriter class)从文件中删除条目(C# StreamWriter 类)
【发布时间】:2012-01-24 04:32:07
【问题描述】:

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

一个
两个

现在,我需要删除其中一个条目,比如“两个”。我正在使用 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();
    }
}

【问题讨论】:

    标签: c# streamwriter


    【解决方案1】:

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

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

    这将覆盖以前的文件。

    【讨论】:

      猜你喜欢
      • 2013-02-20
      • 2016-07-25
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 2023-04-06
      • 2017-10-22
      相关资源
      最近更新 更多