VB - 检索自上次更改以来对 .txt 文件的新增内容

Posted

技术标签:

【中文标题】VB - 检索自上次更改以来对 .txt 文件的新增内容【英文标题】:VB - Retrieving new additions to .txt file since last changed 【发布时间】:2017-09-27 11:26:11 【问题描述】:

所以基本上我要做的是创建一个日志监视器。我需要监视 .txt 日志文件的更改,当它更改时,检索自上次更改数组以来的最新行。从那里我将根据行的内容制作事件。但我无法弄清楚的部分是日志监控。我是 VB 的新手,本学期刚开始我的 VB 入门课程,但我已经将 php 作为一种爱好编程了 6 年。有什么建议吗?

【问题讨论】:

你可以在这里找到 C# 实现:***.com/a/2373515/5601657 【参考方案1】:

这是这个 C# 实现的 vb.net 转换 (https://***.com/a/2373515/5601657)

您可以存储上次读取操作的偏移量,并在收到更改的文件通知时将文件查找到该偏移量。下面是一个例子:

主要方法:

Public Shared Sub Main(args As String())
    File.WriteAllLines("test.txt", New String() )
    New Thread(Function() ReadFromFile()).Start()
    WriteToFile()
End Sub

从文件读取方法:

Private Shared Sub ReadFromFile()

    Dim offset As Long = 0
    Dim fsw As New FileSystemWatcher() With  _
    Key .Path = Environment.CurrentDirectory, _
    Key .Filter = "test.txt" _


    Dim file__1 As FileStream = File.Open("test.txt", FileMode.Open, FileAccess.Read, FileShare.Write)

    Dim reader As New StreamReader(file__1)
    While True
        fsw.WaitForChanged(WatcherChangeTypes.Changed)

        file__1.Seek(offset, SeekOrigin.Begin)
        If Not reader.EndOfStream Then
            Do
                Console.WriteLine(reader.ReadLine())
            Loop While Not reader.EndOfStream

            offset = file__1.Position
        End If
    End While
End Sub

写入文件方法:

Private Shared Sub WriteToFile()
    For i As Integer = 0 To 99
        Dim writeFile As FileStream = File.Open("test.txt", FileMode.Append, FileAccess.Write, FileShare.Read)

        Using file__1 As FileStream = writeFile
            Using sw As New StreamWriter(file__1)
                sw.WriteLine(i)
                Thread.Sleep(100)
            End Using
        End Using
    Next
End Sub

【讨论】:

以上是关于VB - 检索自上次更改以来对 .txt 文件的新增内容的主要内容,如果未能解决你的问题,请参考以下文章

如何使vim指示自上次保存以来文件已更改?

检索Google文档中的更改,以计算团队成员中每个团队成员的贡献

Git:如何将自上次提交以来的更改移动到新分支

如果自上次事件以来传感器读数没有更改,则如何在未发送传感器读数时计算窗口上的聚合?

错误:找不到要更新的行。自上次读取以来,某些值可能已更改。关于将提供程序从 SQLOLEDB 更改为 MSOLEDBSQL

git:撤消所有工作目录更改,包括新文件