我有一个包含多个文本条目的文件,比如说
一个
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();
}
}
答案 0 :(得分:2)
您可以在打开输出文件时将FileMode.Open
更改为FileMode.Create
来解决问题。那就是:
using (IsolatedStorageFileStream isoStream =
store.OpenFile("user_list", FileMode.Create))
这将覆盖以前的文件。