问题是这样的:
有一个文本文件,是从ACCESS数据库文件导出直接得到的(上百万行),现在想把这个文件读取分析出来。问题在于:
数据库中有CHAR类型的字段,其中包括有换行符号,比如有一行数据是这样的:
"1","0001","\nabc\ndef\n"
其中的'\n'即'#10',16进制的'0A'。
在notepad中可以正确显示成一行,UltraEdit中就分成了多行。如果使用StreamReader.ReadLine函数,你会发现这一行数据被分成了多行。请问有什么办法能快速而争取的读取这个文本文件呢?

解决方案 »

  1.   

    我在记事本中保存了多行"1","0001","\nabc\ndef\n"
    用ReadLine()读居然没有问题。
      

  2.   

    先用replace("\n","\\n")
    再讀。
      

  3.   

    用Read来替换,然后自己找每行结束标志
      

  4.   

    把前面两个\n换成别的字符
    或split
      

  5.   

    string s="\nabc\ndef\n";
    public string Read(string s)
    {
    string tmp="";
    int ind=s.IndexOf("\n");
    while(ind>-1)
    {
    tmp+=s.Substring(0,ind);
    s=s.Remove(0,ind+1);
    ind=s.IndexOf("\n");
    }
    return tmp;
    }
      

  6.   

    用Read来替换"\n"为"!"(总之有别于数据的标识),然后分析完后在换回去能直接分析(导出的格式一致或只做简单的修改或插入字段)就可以省略上面那部
      

  7.   

    To kissknife(侧身向南边):这里的‘\n’是指换行符,不是“\\n”。To hyj_828(水梦):文件包含两种换行符,一种是数据库文本字段中保存的换行,一种是数据库记录之间的换行符,现在是怎样获取一行的问题,这样做没有意义。To  Knight94(愚翁): 是啊,没有其他办法,我也是侥幸才来发个帖子看有没有其他办法,我还尝试了Microsoft Script runtime 还是一样,都是遇到'\n'和'\r\n'都会分割,如果能配置ReadLine函数的行分割为'\r\n'而不考虑'\n'就好了。只好老实的自己一个字节一个的来读了,主要是怕速度慢,100万行我没有经验。To  misvcom(零下一度): 不错,我也想这么做。To  sugarsupper(北欧神话): 问题不在于分割,在于怎样快速的确定一行。To   yuanarea(超级赛亚人): 你说的和hyj_828(水梦)说的相识,但没有意义。看来只有自己来找行结束符号了,自己动手,丰衣足食,老毛说的果然有道理啊。
    如果哪位有高招,敬请赐教。我的目的是把这个txt文件中的数据库记录分析出来,只要能快速正确的达到这个目的就可以了。
      

  8.   

    0XA 是换行,
    0XD,0XA ,才是换行加回车
      

  9.   

    to 是啊,没有其他办法,我也是侥幸才来发个帖子看有没有其他办法,我还尝试了Microsoft Script runtime 还是一样,都是遇到'\n'和'\r\n'都会分割,如果能配置ReadLine函数的行分割为'\r\n'而不考虑'\n'就好了。只好老实的自己一个字节一个的来读了,主要是怕速度慢,100万行我没有经验。速度其实也慢不到哪儿去,用readline也是由其转换成string,然后再查找;
    而自己读出来byte做查找,基本上和上面操作一样。