c# - 在尝试仅获取文件的增量数据时获取重复内容和部分内容
问题描述
我有一个test.txt
由 3rd 方应用程序不断提供数据的文件。
现在我的要求是每 1 小时获取一次这个文件的数据,内容应该只是增量的,没有重复的数据。
例子 -
第一次运行我的应用程序,如果数据
test.txt
低于...line 1......... line 2......... line 3......... data is continuously feeding
那么我的文件数据
first_run_file.txt
将是......line 1......... line 2......... line 3.........
现在 1 小时后,如果数据
test.txt
低于...line 1......... line 2......... line 3......... line 4......... line 5.........
数据源源不断
那么我的文件数据
second_run_file.txt
将是......line 4......... line 5.........
使用下面我正在使用的代码,File.Seek
我的结果文件要么有部分内容,要么有重复的数据。读取文件并仅获取增量字节的最佳方法是什么?
byte[] arrBytes;
using (var fileStream = new FileStream(@"C:\Temp\test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
//save this value to store current stream lenght
var fileSizeInBytes = fileStream.Length;
//skip the bytes
fileStream.Seek(0, SeekOrigin.Begin);
//next time onward I'm using fileSizeInBytes for skip bytes, so that I only get incremental data
//fileStream.Seek(fileSizeInBytes, SeekOrigin.Begin);
arrBytes = new byte[fileStream.Length];
fileStream.ReadAsync(arrBytes, 0, (int)fileStream.Length);
File.WriteAllBytes("Foo.txt", arrBytes);
}
first_run_file.txt
文件可能有部分字节,如条目,line 1......... line 2......... line 3......... li
结果文件中的此处
line 4
不完整。second_run_file.txt
文件可能有部分字节,如条目,line 2......... line 3......... line 4......... line 5.........
这里
line 2....
和line 3....
是重复的,也存在于first_run_file.txt
解决方案
推荐阅读
- google-bigquery - 使用 Apache Beam java 删除大查询表
- c++ - 该模板中究竟检查了什么?
- python - 如何根据我的时区在odoo 11中导出日期时间?
- html - 渲染到另一个 html 页面
- android - Dagger 2 - 将参数传递给 Fragment 的正确方法
- vespa - 通过分解 map 对结构进行分组
进入列表并使用 sameElement 过滤 - spring - Spring Boot Kafka 启动错误“无法建立与节点 -1 的连接。代理可能不可用。”
- python - 如何跟踪帖子被共享的次数 - Django
- node.js - 当我在邮递员上运行时如何请求数据。目前,电子邮件、名字和姓氏被硬编码到代码中。我如何请求数据?
- json - 如何在没有中间结构的情况下有效地将 JSON 的一部分提取为 Vec?