我知道在VB上我们可以使用这段代码读取二进制文件
Function GetMonData()
Dim Header(63) As Byte, Rows As Long, NoUse As Long
Dim i As Long, j As Long, TmpStr As String
Open "file.dat" For Binary As #1
Get #1, , Header
Get #1, , Rows
Get #1, , NoUse
Close #1
End Function
但是c#中的方法怎么样?
尤其是Get #1, , Header
我已经尝试了
string strFilePath = @"C:\file.dat";
FileStream stream = new FileStream(strFilePath, FileMode.Open);
BinaryReader b = new BinaryReader(File.Open(strFilePath, FileMode.Open));
我只是混淆了为头部获取数据(63)字节,(4)用于行的字节,(4)用于NoUse的字节
在VB中我们可以使用Get #1, , Header
,那么c#呢?我需要寻找流吗?
先谢谢
答案 0 :(得分:2)
那是VB6 / VBA代码。 VB.NET仍然不情愿地支持旧语法,以允许移植程序。但肯定你必须将声明从Long更改为Integer。
如果您需要能够读取这样的旧文件,那么最明显的方法是利用.NET优秀的语言互操作并创建一个您在C#项目中引用的VB.NET类库。到目前为止,确保代码兼容并处理Get()的怪异语义的最佳方法。
否则你将不得不使用BinaryReader.GetBytes()来读取Header,ReadInt32()来获取其他的。