边读边处理,不要全部放到内存中 new Thread((ThreadStart)delegate { StreamReader sr = new StreamReader(FileName, Encoding.GetEncoding("gb2312")); int line = 0; string line= sr.ReadLine(); while (line!="") { line= sr.ReadLine(); } sr.Close(); }).Start(); http://www.codeproject.com/KB/database/CsvReader.aspx
new Thread((ThreadStart)delegate
{
StreamReader sr = new StreamReader(FileName, Encoding.GetEncoding("gb2312"));
int line = 0;
string line= sr.ReadLine();
while (line!="")
{
line= sr.ReadLine();
}
sr.Close();
}).Start();
http://www.codeproject.com/KB/database/CsvReader.aspx
word及urltraedit之类的软件能快速打开大文件,肯定是不会一次性全部读取的,我没研究过,但觉得应该只读取了当前需要显示出来的一部分及后续可能显示的一部分,其它的部分类容只是在后台做索引,当滚动条滚动到那个地方的时候再根据索引快速定位读取显示那一部分。
FileStream fs = new FileStream("c:\\abc.txt", FileMode.Open, FileAccess.Read);
fs.Position = 40000000; // 读取的内容的开始位置
byte[] buffer = new byte[100]; // 缓存数据的buffer
fs.Read(buffer, 0, 90); // 读取数据
fs.Close();想读哪儿读哪儿,想读多少就读多少。
用FileStreamFileStream fw = new FileStream(newFileName, FileMode.Append, FileAccess.Read, FileShare.Read);
fw.Seek(1024, SeekOrigin.Begin);
fw.Read(myByte, 0, myByte.Length); 不仅可以随机读写,还可以用异步方式
fw.BeginRead(myData.Buffer, 0, assignSize, new AsyncCallback(AsyncRead), myData); 这样可以实现多线程同时读写文件