在C#中将struct保存到文件中

时间:2010-01-02 01:30:15

标签: c# serialization

我想在C#中的文件中保存数据结构,但我不想使用序列化和反序列化来实现它。 我希望实现这个动作,就像我用C和C ++语言实现它一样。

3 个答案:

答案 0 :(得分:3)

System.IO - 文件和流

要在C#/ .NET中以“老式方式”实现它,基于C ++可能使用原始文件和流的假设,您需要从.NET Framework的System.IO命名空间开始。

注意:这允许您完成文件读/写过程的自定义,因此您不必依赖隐式的序列化机制。

可以使用System.IO.FileSystem.IO.FileInfo管理和打开文件,以访问Streams。 (请参阅该页面底部的继承层次结构以查看不同类型的流。)

助手类

所以你不必直接操作位和字节(除非你想)。

对于二进制文件访问,您可以使用System.IO.BinaryReaderBinaryWriter。例如,它可以轻松地在本机数据类型和流字节之间进行转换。

对于基于文本的访问文件访问权限,请使用System.IO.StreamReaderStreamWriter。让我们使用字符串和字符而不是担心字节。

随机访问

如果流上支持随机访问,请使用Stream.Seek(..)之类的方法根据您决定使用的任何算法来确定记录长度等来跳转。

答案 1 :(得分:0)

如果您不想序列化它,您可以随时使用BitConverter通过GetBytes将成员转换为字节,并将它们直接写入Stream。

答案 2 :(得分:0)

您可以使用PtrToStructureStructureToPtr将内容转储到字节数组中的非类型化数据中,您可以轻松地将该文件作为一个块推送到该文件。如果您的结构包含对其他对象的引用,请不要尝试此操作(尝试保留索引,或许)。