比如 
1.txt 
   111111111 
   222222222 
   333333333 我要变成 
   111111111 
   AAAAAAAAA 
   222222222 
   333333333

解决方案 »

  1.   

    不好意思啊,文件比较大,需要插入到以一个自定义的特殊字符串开始的下面
    比如
    1.txt
      11111
      22222
      33333
      44444
       ...
      //*******
      9999
      0000我需要变成
        11111
      22222
      33333
      44444
       ...
      //*******
      AAAA
      BBBB
      CCCC
      9999
      0000
      

  2.   

      给楼主写了个比较通用的过程。不管文件大小,可以通吃。
      只要你不拿一个非常巨大的文件来、偏偏又要插到开头的位置去,这个过程应该
    是没什么问题的(这时主要是看能不能把这个文件全部保存到String数组里去,就看
    你的内存够不够了)。并且总体效率来说,也算是很高的了:只把文件读了一遍,然
    后直接从插入点写到文件尾。
      只要 lLocat 的值不是非常大,这个过程就用不了多少内存。
      另外多说一句:文本文件必须是 0x0D 0x0A (就是“回车+换行”分界的),
    如果是仅以“换行”作为行分界符,这个过程就需要改一下才行,并且对“巨大”的
    文件不适合处理了。这是 VB 本身的原因,它是读到“回车+换行”才认为行结束。
    我曾经遇到过,一个超过600K的Java源程序,它执行一句“Line Input”,就把整个
    文件读完了!(结果是:处理后的文档和处理前一样,当时我还没回过神来,跟踪执
    行过程后才发现原因所在)Sub InstTxt(strFile$, strTxtOut$, lLocat&)
    'strFile    要进行插入操作的文件名
    'strTxtOut  插入内容
    'lLocat     插到倒数第几行    Dim sTxtSave$(), lPntStack&(), ltmpA&, ltmpB&
        Dim MASKNUM&, lCurPnt&, lFNum&, lLineCnt&    If (lLocat < 0) Then Error (17)
        lFNum = FreeFile()
        Open strFile For Binary As #lFNum
        lCurPnt = LOF(lFNum)
        If ((lLocat = 0) Or (lCurPnt = 0)) Then
            Put #lFNum, lCurPnt + 1, strTxtOut & vbCrLf
            Close #lFNum: Exit Sub
        End If
        ltmpA = -1: ltmpB = lLocat
        While (ltmpB > 0)
            ltmpA = ltmpA And (ltmpA - 1)
            ltmpB = ltmpB And ltmpA
        Wend
        MASKNUM = ltmpA Xor -1&
        ReDim sTxtSave(0 To MASKNUM), lPntStack(0 To MASKNUM)
        ltmpA = lCurPnt: ltmpB = 1
        lCurPnt = 0: lLincnt = 0: Seek #lFNum, 1
        Do
            lPntStack(lCurPnt) = ltmpB
            Line Input #lFNum, sTxtSave(lCurPnt)
            ltmpB = Seek(lFNum)
            lLineCnt = lLineCnt + 1
            lCurPnt = lLineCnt And MASKNUM
        Loop While (ltmpB < ltmpA)
        If (lLocat >= lLineCnt) Then
            Seek #lFNum, 1
            For ltmpA = 0 To lCurPnt - 1
                Put #lFNum, , sTxtSave(ltmpA) & vbCrLf
            Next
            Close #lFNum: Exit Sub
        End If
        ltmpA = (MASKNUM + 1 + lCurPnt - lLocat) And MASKNUM
        Seek #lFNum, lPntStack(ltmpA)
        Put #lFNum, , strTxtOut & vbCrLf
        While (ltmpA <> lCurPnt)
            Put #lFNum, , sTxtSave(ltmpA) & vbCrLf
            ltmpA = (ltmpA + 1) And MASKNUM
        Wend
        Close #lFNumEnd Sub  是倒数第几行,你自己搞定。
      你发贴提问时是插入一行,现在又变成插多行了。
      不过插多行可以象这样来调用:
    Dim strTemp$
    strTemp = "AAAA" & vbCrLf & "BBBB" & vbCrLf & "CCCCC"
    Call InstTxt(strFileName, strTemp, nnnnn)     'nnnnn是你具体的倒数第几行