c# - 我应该使用什么 FileMode.Open 或 FileMode.Create 来更改二进制文件
问题描述
我正在使用 BinaryFormatter 和 FileStream 将复杂对象的列表写入二进制文件。对于写入文件的方法,我应该使用 FileMode.Create 创建一个新文件并用一个全新的文件覆盖它,还是应该做一些不同的事情来打开它并只更改已更改的内容?
我正在尝试序列化、反序列化、读取、写入以下内容:
List<Class> objectlist = new List<Class>();
解决方案
这两个功能应该可以解决您的问题。首先创建您的文件,然后读取它。
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);
}
}
推荐阅读
- laravel - Laravel 数据表原始列
- python - 如何在 python 中使用模拟数据创建数据框
- android - Itext 5.5 将图像添加到文档
- ios - Iphone应用程序一旦推送到商店就会崩溃,但不会崩溃
- c# - 从 MS Access 导入反馈以在 VB.Net 中显示
- bash - Postgres,我如何拒绝创建具有奇怪名称的数据库(尾随空格、前导空格,甚至 avlid 在数据库名称中使用空格)
- javascript - 为什么 map 函数会改变参数数组?
- javascript - 在Javascript中从对象多个动态属性名称中获取值
- .net-core - Dotnet 核心集成测试夹具导致 json 解析错误
- microsoft-graph-api - 使用 delta 函数时发生重复事件时缺少属性