更新されるたびに削除され書き換えられるログファイルを継続的に監視しようとしています。C#再作成中のファイルを継続的に監視しています
私の現在のアプローチは、FileSystemWatcherを使用することでした。これは、ファイルを変更するときにはうまくいきますが、ファイルを削除して同じ名前の新しいファイルを作成すると、ファイルの追跡が中止されます。
私の現在のアプローチ:
作成および削除の操作はFileSystemWatcherのOnChanged
イベントをトリガしませんので、これは
namespace LogReader
{
class Program
{
static void Main(string[] args)
{
Watch();
while (true)
{
}
}
public static void Watch()
{
var watch = new FileSystemWatcher();
watch.Path = @"C:\TEMP\test";
watch.Filter = "test.txt";
watch.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite;
watch.Changed += new FileSystemEventHandler(OnChanged);
watch.EnableRaisingEvents = true;
}
private static void OnChanged(object source, FileSystemEventArgs e)
{
if (e.FullPath == @"C:\TEMP\test\test.txt")
{
Console.Clear();
Stream stream = File.Open(@"C:\TEMP\test\test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader streamReader = new StreamReader(stream);
var lines = streamReader.ReadToEnd();
Console.Out.WriteLine(lines);
streamReader.Close();
stream.Close();
}
}
}
}
作成したり削除したりすることもできます。 – BugFinder