C# FileInfo.length和File.ReadAllText

C# FileInfo.length和File.ReadAllText,c#,.net,C#,.net,我正在访问一个由第三方工具更新的文件,该工具不断从com端口捕获数据并填充该文件。 对于这个文件,在填充数据的同时,我想对内容进行一些检查,并记录状态以供参考 而且,为了进行检查,我使用FileInfo.Length操作来了解文件的长度,我还使用file.ReadAllText(文件名).Contains(搜索文本)来检查文件中是否有所需的关键字(正在不断更新)。 我的问题是对正在运行的文件使用FileInfo.Length和File.ReadAllText是否会影响第三方工具执行的更新操作第三

我正在访问一个由第三方工具更新的文件,该工具不断从com端口捕获数据并填充该文件。 对于这个文件,在填充数据的同时,我想对内容进行一些检查,并记录状态以供参考

而且,为了进行检查,我使用
FileInfo.Length
操作来了解文件的长度,我还使用
file.ReadAllText(文件名).Contains(搜索文本)
来检查文件中是否有所需的关键字(正在不断更新)。 我的问题是对正在运行的文件使用
FileInfo.Length
File.ReadAllText
是否会影响第三方工具执行的更新操作第三方工具更新的文件是否会因为这些检查而丢失数据

此外,是否会有任何影响,如延迟更新此文件等?

简短回答,否


只读操作不会影响其他写入操作。

在另一个进程写入文件时读取文件是安全的。该进程将有一个写锁,而您的进程将有一个读锁

此外,是否会有任何影响,如延迟更新此文件等


这可能会影响写作过程的表现。考虑存储的IOPS。如果您的存储超载,您对它所做的任何操作都将与您的写入过程相竞争,可能会减慢它的速度。

是的,这很有可能。File.ReadAllText()将锁定文件,防止应用程序写入该文件。您必须使用用FileShare.ReadWrite打开的文件流,并将其传递给StreamReader。这也是一个相当昂贵的操作,此类文件可能会变得相当大,因此最终会变成DOS攻击。我假设您正在回答我的第二个问题(同时,是否会有任何影响,如延迟更新此文件等?)。。。在这种情况下,至少当File.ReadAllText释放锁时,第三方工具是否能够继续更新文件(而不会丢失数据)?延迟可以,但不能丢失数据