我的文本文件可能很大,大到几个G,或可能超过10个G,但里面内容肯定只有字母和数字。
从FileStream处理是肯定了,但现在是文本文件经其它软件修改后,写入到文件里,会有可能添加头文件,请问如何判断文本正文从哪里开始。

解决方案 »

  1.   

    我的文本文件可能很大,大到几个G,或可能超过10个G,但里面内容肯定只有字母和数字。
    1.大文件读写=>不能一次性全部读取进来,一部分一部分读取或用内存映射文件。
    2.只有字母和数字=>任何字母或数字的连续组合认定为正文开始,如有文件头则根据协议来找。从FileStream处理是肯定了
    你确定不用内存映射文件方式但现在是文本文件经其它软件修改后,写入到文件里,
    文件?会有可能添加头文件,
    头文件是另外一个文件么?是对数据的索引么?是添加头文件还是添加文件头?请问如何判断文本正文从哪里开始。
    这就是上面说的,如果是添加头文件,关数据文件什么事,打开直接读,找到你描述的字母和数字。
    如果是文件头,一般有自定义协议约定正文开始的位置,seek后读取。不知道我理解对了没有。
      

  2.   

    楼上的都没有用二进制工具打开过文本文件吗,文本文件开始还有其它内容的,并不直接就是正文开始,像UTF-8文本文件,可以在前面加些内容,来表示本文本格式是utf-8,这个称作utf-8 ROM,我是想知道这个开头的二进制内容的规则。或是正文开始是规则。
      

  3.   

    StreamReader默认就会侦测BOM(Byte Order Mark)。比如new StreamReader("...", true);
    中的那个true就是显式要求侦测BOM。你要自己动手也可以,所有BOM都是定义好的,也不过2或3个字节。