首页 > 解决方案 > 我应该使用什么 FileMode.Open 或 FileMode.Create 来更改二进制文件

问题描述

我正在使用 BinaryFormatter 和 FileStream 将复杂对象的列表写入二进制文件。对于写入文件的方法,我应该使用 FileMode.Create 创建一个新文件并用一个全新的文件覆盖它,还是应该做一些不同的事情来打开它并只更改已更改的内容?

我正在尝试序列化、反序列化、读取、写入以下内容:

List<Class> objectlist = new List<Class>();

标签: c#

解决方案


这两个功能应该可以解决您的问题。首先创建您的文件,然后读取它。

public void WriteToBinaryFormatterFile<T>(string filePath, T objectToWrite, bool append = false)
{
    using (Stream stream = File.Open(filePath, append ? FileMode.Append : FileMode.Create))
    {
        var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        binaryFormatter.Serialize(stream, objectToWrite);
    }
 }

读取您的二进制格式化程序文件。

public T ReadFromBinaryFormatterFile<T>(string filePath)
{
    using (Stream stream = File.Open(filePath, FileMode.Open))
    {
        var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        return (T)binaryFormatter.Deserialize(stream);
    }
}

推荐阅读