现在要生成一个这样的日志文件:就是最新的日志必须总是放在最上面
一般情况下都是在文件的末尾追加日志,不知道有什么方法或是有什么函数可以在一个文本文件的顶部而不是末尾追加数据?
而且日志文件的条数是固定的,也就是超过了一定条数的日志信息,必须把最旧的那些删除掉
假如说总数是4条,那么就是这个格式:4,3,2,1
然后接着往下追加日志应该是:5,4,3,2

解决方案 »

  1.   

    i as long 
    open 临时文件 as #1
    open 日志文件 as #2
    print #1,"最新一条日志"
    do while(not eof(2) and i<max-1)
        i=i+1
        readline #2,buffer
        writeline #1,buffer
    loop 
    close(1)
    close(2)
    kill 日志文件
    name 临时文件,日志文件
      

  2.   

    Option ExplicitSub WriteLog(sFile As String, sLog As String, iLogLines As Long)   '注: iLogLines不易过大
        Dim LogBuffer() As String
        Dim iFileNo As Long, iLine As Long, iLoop As Long
        
        ReDim LogBuffer(iLogLines - 1)
        iLine = 0
        LogBuffer(0) = sLog
        iFileNo = FreeFile()
        On Error Resume Next
        Open sFile For Input As iFileNo
        If Err = 0 Then
            Do While Not EOF(iFileNo) And (iLine < iLogLines)
                iLine = iLine + 1
                Line Input #iFileNo, LogBuffer(iLine)
            Loop
            Close iFileNo
        End If
        Err.Clear
        Open sFile For Output As iFileNo
        If Err = 0 Then
            For iLoop = 0 To iLine
                Print #iFileNo, LogBuffer(iLoop)
            Next iLoop
            Close iFileNo
        End If
    End SubPrivate Sub Form_Load()
        Dim i As Integer
        For i = 1 To 120
            WriteLog "C:\1.log", "Log " & Str(i), 100
        Next i
        End
    End Sub
      

  3.   

    Sub WriteLog(sFile As String, sLog As String, iLogLines As Long) 的最后要加一句On Error GoTo 0, 即:Sub WriteLog(sFile As String, sLog As String, iLogLines As Long)
        Dim LogBuffer() As String    ......    End If
        On Error GoTo 0
    End Sub
      

  4.   

    Const MAX As Long = 5
    Public Sub subLog(info As String)
        Dim strBuff As String
        Dim i As Long
        Open "f:\tmp.txt" For Output As #1
        Open "f:\log.txt" For Input As #2
        Print #1, info
        Do While (Not EOF(2) And i < MAX - 1)
            Line Input #2, strBuff
            Print #1, strBuff
            i = i + 1
        Loop
        Close (1)
        Close (2)
        Kill "f:\log.txt"
        Name "f:\tmp.txt" As "f:\log.txt"
    End Sub
      

  5.   

    很感谢楼上几位的回答,我一开始的想法和yachong(蚜虫)一样,也是生成一个临时文件,不过感觉jadeluo(秀峰)的方法似乎效率更高一点,减少了一个文件的生成
    不管怎么样,都要谢谢两位的热心了,问题解决,都给分
      

  6.   

    楼主, 空间效率上应该是yachong的高,时间效率上我们俩个的差不多。