毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

VB如何删除txt文件中重复的行

更新时间:2012-7-31:  来源:毕业论文

在txt文件中,如何去掉里面重复的行,每行的长短不一,但是形式一样,都是用12个";"将其分开。 
文件大小在1M左右。 
本人VB刚入门,此问题一直困惑着本人在工作中的一些数据处理问题

如果只有几兆大小,方案就非常多了


VB codeOption Explicit

Private Declare Function GetTickCount Lib "kernel32.dll" () As Long

Private Sub Command1_Click()
    Dim Buff As String, LineBuff() As String, OutBuff() As String
    Dim I As Long, J As Long
    Dim lTime As Long
   
    lTime = GetTickCount
   
    Open "d:\temp\test.txt" For Binary As #1
        Buff = Space(LOF(1))                    '一次读入内存
        Get #1, , Buff
    Close #1
   
    J = -1
    LineBuff() = Split(Buff, vbCrLf)            '按行分割
    ReDim OutBuff(0)
   
    For I = 0 To UBound(LineBuff)               '逐行比较是否有重复
        If InStr(1, Join(OutBuff(), " "), LineBuff(I), vbTextCompare) = 0 Then
            J = J + 1                           '没有重复,就增加到输出缓冲区
            ReDim Preserve OutBuff(J)
            OutBuff(J) = LineBuff(I)
        End If
    Next
   
    Open "d:\temp\testout.txt" For Binary As #1 '将输出缓冲区内容写入到文件
        Put #1, , Join(OutBuff(), vbCrLf)
    Close #1
   
    MsgBox GetTickCount - lTime                 '计算耗时
End Sub


随便写的一个,都还行.

测试文件是你那几行内容不断复制,一共是14.8M最终大小,共491029行.

在我机器上耗时11.2秒左右完成替换.

最终输出结果是如下三行:

1;2;3;4;5;6;7;8;9;10;11;12 
1;2;3;4;5;6;7;asda8;9;10;11;12a 
1;2;3;4;5;6;7;8;9;asdasd10;11;12b

想要更快需要考虑其它方案了.
1 文件的删减添加,在实际操作中都是创建新文件。但是可以在写好以后,删除旧文件,将新文件改为旧名。

2 用你的数据做了一个 1.2M 的文件来测试。结果处理时间不到一秒。注意将 LstBox 控件的 Visible 设置为不可见。免得更新界面耽误时间。

[1] [2] 下一页

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。