读取.csv文件到底使用哪种方式效率更高?

通过测试对比发现,还是网上的很多网友的推荐使用readLine()方法效率更高。


测试环境:windows mobile 6.3 平台,text.csv文件有3.8M大小,23列数据,有2.1W条记录



1、以下是使用bytes[]数组对文件进行读取的方式

<textarea name="code" class="c#">  

string path="text.csv";
FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);       //打开出货单头档
byte[] bytes = new byte[fileStream.Length];
fileStream.Read(bytes, 0, (int)fileStream.Length);
int Len = 0;
long totalLen = 0;
while (bytes[totalLen + Len] != '\n')
{
       Len++;
}
totalLen += Len + 1;                                 //去csv文件的掉标题栏
while (totalLen < fileStream.Length)        //文件未结束,一直读取
{
    Len = 0;
    //i = 0;
    while (bytes[totalLen + Len] != '\n')        //每次读取一行,记录一行的长度为Len
    {
          Len++;
    }
   Encoding.Default.GetString(bytes, (int)totalLen, Len - 1);    //将读取到的一行数据转换为string类型
   totalLen += Len + 1;
}

</textarea> 


2、以下是使用StreamReader类的readLine()方法进行一行一行地读取

<textarea name="code" class="c#">  

string path="text.csv";

string line;

StreamReader file=null;
      FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
      if (fileStream != null)
      {
          fileStream.Seek(0, SeekOrigin.Begin);
          file = new StreamReader(fileStream, Encoding.Default);
     }

while((line = file.ReadLine()) != null)

{

     string[] arr = line.Split(',');            //后来经过测试发现,使用这种数组的方式是一个极其错误的方式,因为它耗时是最多的一个,可能系统的构造和析构耗费了大量的时间

}

</textarea>  

不幸的是这位:http://blog.csdn.net/leehao_vip/article/details/7851567  同仁也是使用这种方式进行读取700W条数据

你可能感兴趣的:(读取.csv文件到底使用哪种方式效率更高?)