日期:2014-05-17  浏览次数:20405 次

C#读大文件

            string filepath = @"D:\11\aa.txt";//文件大概1G内
            using (FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read))
            {
                byte[] buff = new byte[1024]; 
                int datalength = 0;
                int start=0;
                string cellstr = "";
                while ((datalength = fs.Read(buff,0, buff.Length)) > 0)
                {
                    cellstr = Encoding.GetEncoding("gb2312").GetString(buff);
                    //处理

                    fs.Seek(start + datalength, SeekOrigin.Begin);
                    buff = new byte[1024];
                }
            }



开始是一次性读取到内存中然后处理 ,由于读取的文件比较大会出异常,现在打算度一部分处理一部分。由于内容里面有中文 而中文又是占用2个字符 如果刚好读到一半 读了一个字符 那最后那个中文就会乱码 。求解 或者其他更好的方法 

------解决方案--------------------
用api的内存映射http://blog.csdn.net/myspringnet/article/details/6285625
------解决方案--------------------
http://msdn.microsoft.com/zh-cn/library/system.io.streamreader%28v=VS.80%29.aspx