日期:2014-05-20  浏览次数:20805 次

文件数据块读取
一个二进制文件是按一块一块数据存的
每块的内容一样
如{   int16
      int32
      char[12]
      .....}
能不能一次读入一块直接写入一个这样的结构中;
public   struct{   int16   aa;
      int32   bb;
    char[]cc=   char[12];
      .....}

------解决方案--------------------
貌视只能用ls的方法了,应为struct a{int16 aa;
int32 bb;
char[]cc= char[12];}
的大小是24B不是20
------解决方案--------------------
private void Form1_Load(object sender, System.EventArgs e)
{
Stream stream=new FileStream(file);
BinaryReader br=new BinaryReader(stream);
MyStruct1 myStruct1=this.readStruct1(br);
stream.Position+=1024;//越过1024没用的
MyStruct2 myStruct2=this.readStruct2(br);
}
private MyStruct1 readStruct1(BinaryReader br)
{
MyStruct1 myTest=new MyTest();
myTest.aa=br.ReadInt16();
myTest.bb=br.ReadInt32();
myTest.cc=br.ReadChars(12);
......
}
struct MyStruct1
{
public int16 aa;
public int bb;
public char[] cc;
}//就是这样了吧
------解决方案--------------------
TO;一个二进制文件是按一块一块数据存的

你是怎么存的,怎么存的,就怎么读出来..

如果是序列化的,当然就用反序列化出来..

个人意见,仅供参考..