有个超过10M的文件,需要高频率的读取,我的思路是先将文件读进内存,然后进行处理。
请问可行吗?如何读进内存?

解决方案 »

  1.   

    文件流FileStream...4.0还可以用内存映射文件...
      

  2.   

    我机子装的是VS2005看了网上一个办法:
    FileStream fs = File.OpenRead(filename);或者FileStream fs = FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);2、准备一个存放文件内容的字节数组,fs.Length将得到文件的实际大小,就像下面这样       byte[] data = new byte[fs.Length];3、调用一个文件流的一个方法读取数据到data数组中       fs.Read (data, 0, data.Length);
    这其中有个问题:读到内存中后,想复制data中指定位置的10个字节到目标字节数组,如何实现?
      

  3.   

    那就是对数组的操作了,
    byte[] bs = new byte[10];
    for(int i=0;i<10;i++)
    {
        bs[i] = data[index+i];
    }
      

  4.   

    复制数组内容不用那么麻烦,有现成的Array.Copy方法...
      

  5.   

    只有Array.CopyTo(),没有Array.Copy()啊
      

  6.   

    直接从Data这个数组中取就好了;Console.Write((char)Data[i]);
      

  7.   

    public static void SafeRead (Stream stream, byte[] data){    int offset=0;    int remaining = data.Length;       // 只要有剩余的字节就不停的读    while (remaining > 0){        int read = stream.Read(data, offset, remaining);        if (read <= 0)            throw new EndOfStreamException("文件读取到"+read.ToString()+"失败!");              // 减少剩余的字节数        remaining -= read;              // 增加偏移量        offset += read;    }}搞定了,谢谢各位。