如何使用c#读取二进制文件?

我有一个二进制文件。 我不知道如何使用C#读取这个二进制文件。

C ++中描述的二进制文件中记录的定义是:

#define SIZEOF_FILE(10*1024) //Size of 1234.dat file is: 10480 + 32 byte (32 = size of file header) typedef struct FileRecord { WCHAR ID[56]; WCHAR Name[56]; int Gender; float Height; WCHAR Telephne[56]; and........ } 

如何在C#中读取包含这些记录的二进制文件,并在编辑后将其写回?

实际上有一种更好的方法可以使用struct类型和StructLayout直接映射到二进制文件中的数据结构(我没有测试过实际的映射,但这是查找它并查看你得到的内容的问题从阅读文件回来):

 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)] public struct FileRecord { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 56)] public char[] ID; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 56)] public char[] Name; public int Gender; public float height; //... } class Program { protected static T ReadStruct(Stream stream) { byte[] buffer = new byte[Marshal.SizeOf(typeof(T))]; stream.Read(buffer, 0, Marshal.SizeOf(typeof(T))); GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); T typedStruct = (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(T)); handle.Free(); return typedStruct; } static void Main(string[] args) { using (Stream stream = new FileStream(@"test.bin", FileMode.Open, FileAccess.Read)) { FileRecord fileRecord = ReadStruct(stream); } } 

请参阅下面的示例。

  public byte[] ReadByteArrayFromFile(string fileName) { byte[] buff = null; FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); long numBytes = new FileInfo(fileName).Length; buff = br.ReadBytes((int)numBytes); return buff; } 

希望有帮助……

您可以使用FileStream来读取文件 – 使用File.Open方法打开文件并获取FileStream – 查看此处了解更多详细信息