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 文件的新增内容的主要内容,如果未能解决你的问题,请参考以下文章
检索Google文档中的更改,以计算团队成员中每个团队成员的贡献
如果自上次事件以来传感器读数没有更改,则如何在未发送传感器读数时计算窗口上的聚合?
错误:找不到要更新的行。自上次读取以来,某些值可能已更改。关于将提供程序从 SQLOLEDB 更改为 MSOLEDBSQL