首页 > 解决方案 > 在尝试仅获取文件的增量数据时获取重复内容和部分内容

问题描述

我有一个test.txt由 3rd 方应用程序不断提供数据的文件。

现在我的要求是每 1 小时获取一次这个文件的数据,内容应该只是增量的,没有重复的数据。

例子 -

  1. 第一次运行我的应用程序,如果数据test.txt低于...

    line 1.........
    line 2.........
    line 3.........
    data is continuously feeding
    

    那么我的文件数据first_run_file.txt将是......

    line 1.........
    line 2.........
    line 3.........
    
  2. 现在 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);
}
  1. first_run_file.txt文件可能有部分字节,如条目,

    line 1.........
    line 2.........
    line 3.........
    li
    

    结果文件中的此处line 4不完整。

  2. second_run_file.txt文件可能有部分字节,如条目,

    line 2.........
    line 3.........
    line 4.........
    line 5.........
    

    这里line 2....line 3....是重复的,也存在于first_run_file.txt

标签: c#file

解决方案


推荐阅读