Сериализация переписывает в файл - PullRequest
0 голосов
/ 24 декабря 2018

Я создал класс для создания процесса чтения и записи от пользователя.Может ли кто-нибудь помочь мне, почему он пишет в текстовый файл, но сам перезаписывает?

[Serializable]
class FileReadWrite<TFile>
{
    static Stream stream;
    static IFormatter formatter = new BinaryFormatter();

    //Writing to text file
    public static void SerializeData(List<TFile> objectToSerialize, string filePath)
    {            
        stream = new FileStream(filePath, FileMode.Create);        
        formatter.Serialize(stream, objectToSerialize);
        Console.WriteLine("Account Created SuccessFully!");
        stream.Close();
    }
}

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Вопрос не очень понятен, возможно, это то, что вы хотите сделать: используя (FileStream file = new FileStream (Filepath, FileMode.Append, FileAccess.Write))

0 голосов
/ 24 декабря 2018

Нужен FileMode.Append.Согласно doc :

Открывает файл, если он существует, и ищет в конце файла, или создает новый файл.Это требует добавления разрешения.FileMode.Append можно использовать только в сочетании с FileAccess.Write.Попытка поиска позиции до конца файла вызывает исключение IOException, и любая попытка чтения завершается неудачей и вызывает исключение NotSupportedException.

Таким образом, решение будет:

stream = new FileStream(filePath, FileMode.Append);

Или вы можете иметь явную проверку вроде:

if(!File.Exists(fileName))
{ // create a new file 
}
else //Append to a file
...