1.上周发过帖了。读取超大文本文件(2G)以上,一开始就没说清除,问题还没解决,只能厚着脸皮再来请教各位,反正哥脸皮够厚,哈哈
2。问题再重述一下,是这样的,要用程序读取一个2G大的文本文件,不要说为什么要读取这么大一个文件,没办法,俺们只能这样做,数据是人家生成的。文本文件的内容是表示十六进制的字符。如下截图所示
显然,读取这样一个文件要分块读取,先读取一块,然后把数据处理完了,再读下一块。读取来的内容,要把他们两个两个字符放在一起(因为他们表示的是十六进制的数据,如“FF放在一起,转换成255,“04”转换成4”)。不懂的地方。看了上一个帖,以及网上的源码,基本上都说用Stream的,是用FileStream还是StreamReader呢?貌似FileStream有流定位的方法,而StreamReader没有提供这样的方法,还有文件里的数据是一行的,不能用while ((str = sr.ReadLine()) != null)这样的方式来读。有点烦燥了,对于文件读取,请大家指导

解决方案 »

  1.   

    StreamReader中可以打开FileStream的文件流
      

  2.   

    这个我知道,但是不知道他们都有什么特点和优点,FileStream的Read 方法可以定位的读取,也有一个readbyte的方法,难道真的要一个字节一个字节的读取吗?
      

  3.   

    FileStream类Seek可定位,用Read可读取一段数据到字节数组。
      

  4.   

    恩恩恩,那StreamReader也有这个方法,两者哪个好?
      

  5.   

    计算机保存的都是二进制数据
    binaryreader  
    用特定的编码将基元数据类型读作二进制值。
    using (FileStream fs = File.Open("", FileMode.Open))
    {
    BinaryReader br = new BinaryReader(fs, Encoding.UTF8);
    br.BaseStream.Position = 04;
    int a = br.ReadInt32();}