C# 获取重复内容和部分内容,同时尝试仅获取文件的增量数据
我有一个文件C# 获取重复内容和部分内容,同时尝试仅获取文件的增量数据,c#,file,C#,File,我有一个文件test.txt,它由第三方应用程序不断提供数据 现在我的要求是每1小时获取一次这个文件的数据,内容应该是增量的,没有重复的数据 示例- 第一次运行我的应用程序,如果test.txt的数据在下面 line 1......... line 2......... line 3......... data is continuously feeding line 1......... line 2......... line 3......... line 4......... line
test.txt
,它由第三方应用程序不断提供数据
现在我的要求是每1小时获取一次这个文件的数据,内容应该是增量的,没有重复的数据
示例-
test.txt
的数据在下面
line 1.........
line 2.........
line 3.........
data is continuously feeding
line 1.........
line 2.........
line 3.........
line 4.........
line 5.........
然后我的文件first\u run\u file.txt的数据将
line 1.........
line 2.........
line 3.........
line 4.........
line 5.........
test.txt
的数据低于
line 1.........
line 2.........
line 3.........
data is continuously feeding
line 1.........
line 2.........
line 3.........
line 4.........
line 5.........
数据不断地传送
然后我的文件second\u run\u file.txt的数据将被
line 1.........
line 2.........
line 3.........
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\u run\u file.txt文件可能有部分字节,如条目
line 1.........
line 2.........
line 3.........
li
line 2.........
line 3.........
line 4.........
line 5.........
此处,第4行
在结果文件中不完整
second\u run\u file.txt文件可能有部分字节,如条目
line 1.........
line 2.........
line 3.........
li
line 2.........
line 3.........
line 4.........
line 5.........
这里的第2行..
和第3行..
是重复的,它也出现在first_run_file.txt中
您是否考虑过创建一个表示确切文件/数据结构的类?从那里将所有数据加载到一个列表中,并编写条件语句,根据您所期望的文本或文字内容检查文件。我只在数据同时读写时观察到上述问题。假设有一些文件写入,第三方应用程序停止,然后当我尝试读取增量数据时,就没有问题了。那么为什么会有两个不同的进程读取和/或更新同一个文件呢?我只是好奇。。听起来您需要为此执行多线程处理,但根据您的使用案例,我认为这很危险。一个遗留应用程序不断向文件提供数据,现在我的应用程序只是尝试以增量方式读取数据,用于不同的目的。