比如说选择N个文件里,批量删除这N个TXT文件的从倒数第一行删到倒数第三行,然后再从第一行删到第三行,这样的方法,咋个实现???

解决方案 »

  1.   


    读文件  
                dim sFileName as string '文件路经和名称
                dim strtemp as string  '文件中每行            List1.Clear
                Open sFileName For Input As #1            Do While (Not EOF(1))
                    Line Input #1, strTemp
                    List1.AddItem strTemp
                Loop
                Close #1
                Kill sFileName       '读完后直接处理list1中的数据,如果不要第一到第三行,则
            dim i as Integer
              for i=1 to 3 
                list1.RemoveItem  i
            next
           '删除后三行
           for i=list1.listcount to list1.listcount-3 step -1
               list1.removeitem i
           next     '写文件操作
         Set fFile = fso.GetFile(txtFile)
         
         Set ts = fFile.OpenAsTextStream(intFlag, -2)
         for i=1 to list1.listcount
              ts.WriteLine list1.List(i)
         next
         ts.Close文件操作中的变量的声明和引用自己去找吧,错误很多,不想写了,大致就是这个样子了,人家暴风雪说那么详细,你是直接想要源码,给你源码,不过需要修改的很多,要不是看你的分多,连这些都不想写.
      

  2.   

    部分删除实际上就是重写文件。Dim strLine() As String, n As IntegerOpen "C:\testfile.txt" for input as #1
    Do Until EOF(1)
        Redim Preserve strLine(n)
        Line Input #1, strLine(n)
        n = n + 1
    Loop
    Close #1
    Open "C:\temp.txt" For OutPut As #1
    '删除末 3 行
    If Ubound(strLine) >= 3 Then Redim Preserve strLine(Ubound(strLine - 3))
    '从第 4 行开始写文件,等于删除开始 3 行
    If Ubound(strLine) >= 3 Then
        For i = 3 To Ubound(strLine)
            Print #1, strLine(i)
        Next i
    End If
    Close #1
    Kill "C:\testfile.txt"
    Name "C:\temp.txt" As "C:\testfile.txt"
      

  3.   

    这样吧思路还是与上面各位大大的一样 , 只是把代码改改, 并封装为函数, 调用方便, 更改也方便:Public Function DelTXTLine(ByVal TxtName As String)
        Dim I As String, J() As String, TXT_OK() As String
        Dim K As Long, L As Long, J_DEL As Boolean
        
        Open TxtName For Binary As #1
            I = Space(LOF(1))
            Get 1, , I
            J() = Split(I, vbCrLf)  '如果不是回车分开的,就只能用循环一行一行读了
        Close #1
        
        L = UBound(J)               '看看有几行
        ReDim TXT_OK(0)
        
        For K = 0 To L
            Select Case K
                Case 0, 1, 2, L - 2, L - 1, L   '前三行与后三行,其它条件可以自己改
                    J_DEL = True
            End Select
            If J_DEL = False Then
                ReDim Preserve TXT_OK(UBound(TXT_OK) + 1)
                TXT_OK(UBound(TXT_OK)) = J(K)
            End If
            J_DEL = False
        Next K
        
        Kill TxtName                            '删除原文件,这里建议改成备份
        
        Open TxtName For Output As #1           '写回去
            For K = 1 To UBound(TXT_OK)
                Print #1, TXT_OK(K)
            Next K
        Close #1
    End Function调用时,直接给出文件名就可以了:      DelTXTLine "1.txt"至于文件名,自己用DIR搞定吧,应该没什么问题的.另外,暴风雨大大用的是拼音打字的?:D
      

  4.   

    文件如果很大可以使用SEEK 进行指定字节的搜索