今天写了个读取txt文件的东东是用winform写的感觉读的好慢1000条数据好像要用好1分多钟这是正常现象呢还是我写的有问题呢读csv 和txt文件有什么好的方法吗分不多请大家帮忙

解决方案 »

  1.   

    http://topic.csdn.net/u/20110813/11/dbf26be2-ac01-441b-8727-2b013e109f54.html
      

  2.   

    IO操作读1000条数据不应该那么慢,我刚才测试了下,包括写1000条,再读出来放到一个StringBuilder里面也就用了29毫秒,应该是你循环里面有很占时间的运算。如果可以的话尽量贴出你的代码。如果不方便推荐你一次吧1000条数据像我一样一次读出来放到一个IEnumerable<string>里面,再用并行把每一行转换成你要的数据,这样会快很多。
      

  3.   


    像我说的并行(多线程,你可以查阅Parallel)就可以用在你把每条数据分割的逻辑,然后创建一个事务进行数据库处理,会更快。
      

  4.   

    参考这个:Collection<string> stringBuffer = new Collection<string>();
                using (StreamReader streamReader = new StreamReader("d:\\1.txt"))
                {
                    string line = String.Empty;
                    while (String.IsNullOrEmpty(line = streamReader.ReadLine()))
                    {
                        stringBuffer.Add(line);
                    }
                    streamReader.Close();
                }            Collection<Entity> entities = new Collection<Entity>();
                Parallel.ForEach(stringBuffer, oneLineString =>
                {
                    //解析你每一条的数据,放到上面定义的实体集合里面。
                    //可以在这里操作数据库进行插入操作,但是不推荐。
                    //推荐在解析完成后,生成一个事务一次处理,避免多次连接数据库操作。
                    //用这个方法要.net4.0,以前的版本用Thread也可以实现,不过效率就...
                });