我经常使用二进制文件来存储可以通过多种编程语言读取的数据。同样在 VB.Net 中。当 VB6 创建二进制文件时,它只包含二进制数据,但是当 VB.NET 创建它时,如下例所示:
Dim fs As New FileStream(setup_file, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)
Dim bf As New BinaryFormatter()
bf.Serialize(fs, myStruct)
fs.Close()
...在数据之前,系统会创建一些带有数据描述的标题。这可能会在以不同的编程语言和/或不同的操作系统读取此类文件时出现问题,主要是在查找标头长度方面。
我可以以“oldfashion”方式制作相同的文件,并且那些不包含任何“header”,只是纯数据,但 VB.NET 程序员经常说他们强烈推荐新样式。
这是类似于“老式”VB6 的方式:
Dim fnum = FreeFile()
FileOpen(fnum, setup_file, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Shared, Len(myStruct))
FilePut(fnum, myStruct, 1)
FileClose(fnum)
问题是:
我可以使用 FileStream、BinaryFormatter 和序列化创建/写入二进制文件,但避免在包含数据的文件中创建标头以及如何执行此操作?