谁能给一个VB.Net按行读取大文本文件(100M以上),然后处理行内容后写入另一文本文件的实例。

能来个多线程的吗

第1个回答  2013-07-24
很简单嘛,600多兆的我都读过,我用的是c#追问

可给我代码吗?谢谢!

追答using (StreamReader sr = new StreamReader("文本文件的路径"))
            {
                var lineStr = sr.ReadLine(); //读取一行
                while (lineStr != null)
                {
                    //处理该行数据 lineStr
                    //...

                    //读取下一行
                    lineStr = sr.ReadLine();
                }
            }

数据量不大情况下,写入另一个文本文件,最好是读取结束后一次性写入(IO效率),而不是读一行写一行,,,数据量很大的话,那就采用流的方式,用 SteamWriter 逐行写入

追问

你这个代码我也能写出来,效率是问题呀?
我看到过一个读写文本文件去除重复行的程序200~300M的文本文件只要10秒左右。当然这个速度不是具体的速度,只是我自己的一个感觉,当时没有测试时间,总而言之就是速度很快,现在需要了才发现那个东西很有用的。

追答

单纯从读取来说,这个写法效率也不差,10秒读100M没问题,他那个算法可能只是在去除重复行和处理数据方面优化得好,读取上不可能还有质的提高(除非不是用 .net)

本回答被提问者采纳
第2个回答  2013-07-24
Sub MainFile()
'源文件
Dim source As New FileStream("", FileMode.Open)
'待写入文件
Dim target As New FileStream("", FileMode.Create)
Dim i As Int32 = -1
Do While True
i = source.ReadByte
If i > -1 Then
If i <> 10 AndAlso i <> 13 Then
'排除换行符
target.WriteByte(CByte(i))
End If
Else
Exit Do
End If
Loop
End Sub本回答被网友采纳
相似回答