Удалить запись из файла (класс C # StreamWriter) - PullRequest
1 голос
/ 20 декабря 2011

У меня есть файл, который содержит несколько текстовых записей, скажем

один
два
три

Теперь мне нужно удалить одну из записей, скажем "два",Я использую классы 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();
    }
}

1 Ответ

2 голосов
/ 20 декабря 2011

Вы можете исправить проблему, изменив FileMode.Open на FileMode.Create при открытии выходного файла. То есть:

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

Это заменит предыдущий файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...