У меня есть файл, содержащий несколько текстовых записей, например
один
два
три
Теперь мне нужно удалить одну из записей, скажем «два». Я использую классы StreamReader и StreamWriter. Чтобы удалить, сначала я читаю содержимое файла в строку с помощью класса StreamReader, заменяю "two \ r \ n" в строке чтения на "", а затем я записываю эту строку в файл с помощью StreamWriter класс. Но, поскольку длина вновь записанной строки, т.е. «один \ r \ nтри \ r \ n», меньше, чем длина исходной строки, то есть «один \ r \ ntwo \ r \ nthree \ r \ n», первые несколько символов получают перезаписываются, а символы ближе к концу все еще остаются там, что приводит к "одному \ r \ nтри \ 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();
}
}