StreamReader每次读一行,判断是否<REC>,然后自己处理。

解决方案 »

  1.   

    给REC个值    1 ,0   进行判断
      

  2.   

     string path = @"D:\3.txt";//读取文件txt
            StringBuilder sb = new StringBuilder();
            int index = 0;//存放第几行。
            using (FileStream fs = new FileStream(path, FileMode.Open))
            {
                using (StreamReader sr = new StreamReader(fs))
                {
                    while (!sr.EndOfStream)
                    {
                        index++;//循环一遍+1,大于1就是第二行
                        string sLine = sr.ReadLine();
                        if (sLine.Length < 1)
                        {
                            continue;
                        }
                        if (index > 1)//去掉rec。从rec下面的行开始执行
                        {
                            string[] test1 = sLine;
                            foreach (string s in test1)
                            {
                                sb.Append(s.Trim() + "</br>");//你放二维数组这里。
                            }
                        }
                    }
                }
            }
    自己看着改吧改吧。
      

  3.   

    你这样还不如做成xml格式的文件,
    读取又快又方便
      

  4.   

    同意XML格式文件,或者<REC>改为<REC1> <REC2> 这样加个编号,容易获取,使用API函数直接读
      

  5.   

    使用rec分割以后,
    笨办法是使用<>分割得到的一条记录,
    得到每一个数据。
      

  6.   

    XML格式,下面的操作员根本不会。还有我举例的格式规范<REC><单位名称>=什么的都是可以变换的。只要遵从一定的规律就行。最终的目的是把数据对应的存入数据库。
    在导入数据的时候可以让操作员自己定义分隔符(<REC>)和跟数据库匹配的字段(<单位名称>=对应db.CorpName)我自己也想到一个办法,就是不用二维数据,直接定义一维数组,我叫操作员把text中的<REC>下模块换行改为“|”。这样,我取得一维数组的数据时做循环,再根据“|”进行分割,然后对应赋值存入数据库。我现在想问下,我上面的方法和一楼说到的“StreamReader每次读一行,判断是否<REC>,然后自己处理。”效率哪个高,请有经验的高手分析解答下。
      

  7.   

    使用 xml存储数据 读写用api很方便 用txt还要自己写方法 不值得
      

  8.   

    很怀疑你这个文本是不是ini格式的写法,ini有API读写的
      

  9.   

    现在我发现一个问题,用txt的话,我是一个个去判断,是麻烦...
    不过用xml也存在一个问题,就是业务逻辑xml传入的节点名称可以随意命名的(领导强行规定的)。但是操作员在导入的时候,需要添加匹配规则来匹配对应的数据库字段。通过规则添加比如生成这么个规则“name=CI_CorpName;email=CI_Email;address=CI_Address;”
    表示节点name对应数据库字段CI_CorpName,后面类推。
    我通过XmlTextReader textReader = new XmlTextReader(FileUploadXml.PostedFile.FileName);
    开始read后,要怎么去处理这里的对应??
    我是用存储过程写的添加功能。
    比如如果是name节点,则数据库字段实体类 dataInfo.CI_CorpName=name节点的值。后面类推...
    这里的逻辑应该怎么处理??
      

  10.   

    还是没有回复吗,估计我说的不够清楚,我再描述下:
    有这么个xml文件(要说明的是,a,b,c名称不固定的,可以改成,c,d,e;具体通过定义匹配字段进行数据库字段匹配):
    <NewDataSet>
    <Table>
      <a>1</a> 
      <b>a0001</b> 
      <c>small car</c> 
    </Table>
    <Table>
      <a>2</a> 
      <b>b0001</b> 
      <c>big car</c> 
    </Table>
    </NewDataSet>数据库表table:[name][item][detail][pic][oprator][opDate]
    操作的时候组织好匹配规则,a假设对name,b假设对应detail,c假设不是需求数据不进行定义,即:{a=name,b=detail,},然后进行匹配导入。现在有个问题是怎么方便的把xml节点数据根据匹配规则导入到对应的数据库表中。因为a,b,c名称都是可变的..对应规则也只能通过匹配规则获取。我直接把xml的节点名称用匹配规则解析出来的内容赋值上,然后实体类也是这样的操作,貌似不支持这种写法的....这样我就暂时无解了...(还有一种方法就是强制要求操作员直接把xml节点和数据库字段匹配替换,这是我现在想到的唯一方法。无形中加大了操作员的工作,一个不仔细还导入失败。)
    所以想请高手指教 通过解析匹配规则,有咩有简便的方法实现??????
      

  11.   

    多做一步,把此数据格式转成excel,毕竟有规则,然后再转sql(要不要再转随你)。这样可能已经很好处理了。具体怎么导成excel,不懂你再问我,如果此方法可行的话!
      

  12.   

    使用.net framework正规、现成的xml解析程序,不要自己从低级的角度去写。这是讲求效率的公司里的基本做法。当然如果你是学生,一定要自己重写xml解析程序,那么也应该读懂一两种现成的类库的源代码(.net framework本身就是开源的),而不要自己去空想什么xml解析程序。