我有一个c 代码 需要转到c#下面来c中间对文件操作 得函数 有几个 fseek fread ftell
在c#里面要怎么处理呢?因为要打开得文件很大 所以我想不能把文件全读到内存里面来 我只要读几个字节就可以了谢谢

解决方案 »

  1.   

    你可以使用 FileStream 结合 BinaryReader 和 BinaryWriter 这两个类来实现using System.IO;...FileStrem fs = new FileStream(fileName, FileMode.Open);
    BinaryReader br = new BinaryReader(fs);然后就可以使用 br 的各种方法来读取二进制文件,比如ReadByte或ReadBytes方法等
    写入使用 BinaryWriter ,用法和BinaryReader基本一样给你一个完整的读文件例子:using System;
    using System.IO;
    class MyStream 
    {
        private const string FILE_NAME = "Test.data";
        public static void Main(String[] args) 
        {
            // Create the new, empty data file.
            if (File.Exists(FILE_NAME)) 
            {
                Console.WriteLine("{0} already exists!", FILE_NAME);
                return;
            }
            FileStream fs = new FileStream(FILE_NAME, FileMode.CreateNew);
            // Create the writer for data.
            BinaryWriter w = new BinaryWriter(fs);
            // Write data to Test.data.
            for (int i = 0; i < 11; i++) 
            {
                w.Write( (int) i);
            }
            w.Close();
            fs.Close();
            // Create the reader for data.
            fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read);
            BinaryReader r = new BinaryReader(fs);
            // Read data from Test.data.
            for (int i = 0; i < 11; i++) 
            {
                Console.WriteLine(r.ReadInt32());
            }
            w.Close();
        }
    }
      

  2.   

    谢谢  但是如果我要跳到 0x5555 这个地址 读一个长度的数据 怎么做呢?char a[3];
    fseek(fp, 0x5555,0);
    fread(a, sizeof(a), 1, fp);
    应该怎么做?  你写的代码都只是写入 读出  从头开始的 
    我查了一下资料 也没看到有跳转的资料
      

  3.   

    使用TextReader和TextWriter的继承类,每次读取多少字节或写入多少字节你可以自己控制,
    在其内部有一个缓存区,用来提高性能,也避免全部装载数据进行处理,而且也没有必要进行全部装载.
    例子就比较多查Msdn.
      

  4.   

    如何跳转呢?  我只要读入就可以了因为需要读入一个long 不知道是否会涉及到cpu 的 存放顺序问题
      

  5.   

    每次读入多少个字节 倒不是最重要 因为我可以多次读入byte 然后组合起来( 好像很笨)
      

  6.   

    直接设置FileStream.Position属性,即是跳转.