2011-12-26 112 views
0

的我在一些C++代码转换为C#中,我试图找出我怎么能写出来,在我的C#应用​​程序下面的C++代码和过程有它做同样的事情:C#相当于FREAD

fread(&Start, 1, 4, ReadMunge); //Read File position 

我已经尝试了多种方法,如使用的FileStream:

 using (FileStream fs = File.OpenRead("File-0027.AFS")) 
     { 
      //Read amount of files from offset 4 
      fs.Seek(4, SeekOrigin.Begin); 
      FileAmount = fs.ReadByte(); 
      string strNumber = Convert.ToString(FileAmount); 
      fileamountStatus.Text = strNumber; 

      //Seek to beginning of LBA table 
      fs.Seek(8, SeekOrigin.Begin); 
      CurrentOffset = fs.Position; 

      int numBytesRead = 0; 

      while (Loop < FileAmount) //We want this to loop till it reachs our FileAmount number 
      { 
       Loop = Loop + 1; 

       //fread(&Start, 1, 4, ReadMunge); //Read File position 
       //Start = fs.ReadByte(); 
       //Size = fs.ReadByte(); 
       CurrentOffset = fs.Position; 
       int CurrentOffsetINT = unchecked((int)CurrentOffset); 

       //Start = fs.Read(bytes,0, 4); 
       Start = fs.Read(bytes, CurrentOffsetINT, 4); 
       Size = fs.Read(bytes, CurrentOffsetINT, 4); 


       Start = fs.ReadByte(); 


      } 
     } 

我依然会碰到的问题是,Start/Size不成立的4个字节的数据,我需要。

回答

3

如果你正在阅读一个二进制文件,你可能应该看看使用BinaryReader。这样你就不必担心把字节数组转换成整数或其他东西。例如,您可以简单地调用reader.ReadInt32来读取int。