![](/img/trans.png)
[英]Convert a struct to bytes, save to file and read back to struct by another application in C#
[英]Save struct into a file In C#
我想将数据结构保存在C#文件中,但是我不想使用序列化和反序列化来实现它。 我想像在C和C ++语言中一样执行此操作。
要在C#/。NET中以“老式方式”实现它,基于C ++可能使用原始文件和流的假设,您需要从.NET Framework的System.IO
名称空间开始。
注意:这使您可以在文件读取/写入过程中完成自定义,因此您不必依赖隐式的序列化机制。
可以使用System.IO.File和System.IO.FileInfo来访问Streams来管理和打开文件。 (请参阅该页面底部的继承层次结构,以查看不同类型的流。)
因此,您不必直接操纵位和字节(除非您愿意)。
对于二进制文件访问 ,可以使用System.IO.BinaryReader和BinaryWriter 。 例如,它可以轻松地在本机数据类型和流字节之间进行转换。
对于基于文本的访问文件访问,请使用System.IO.StreamReader和StreamWriter 。 让我们使用字符串和字符,而不用担心字节。
如果流支持随机访问,请使用Stream.Seek(..)之类的方法根据您决定用于确定记录长度的任何算法来跳转。
如果您不想序列化它,则始终可以使用BitConverter通过GetBytes将成员转换为字节,然后将其直接写入Stream中。
您可以使用PtrToStructure和StructureToPtr来将内容转储到字节数组中的未类型化数据中/从未类型化数据中转储出来,您可以轻松地将其作为一个块推送到文件中。 如果您的结构包含对其他对象的引用,则不要尝试这种方法(也许尝试保留索引)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.