ln.types/io/WatchedFile.cs

49 lines
1.2 KiB
C#

using System;
using System.IO;
namespace ln.types.io
{
public class WatchedFile : IDisposable, ContentSource
{
public string FileName { get; private set; }
public event FileSystemEventHandler Changed;
FileSystemWatcher fileSystemWatcher;
public WatchedFile(String filename)
{
FileName = filename;
fileSystemWatcher = new FileSystemWatcher(filename);
fileSystemWatcher.Changed += FileSystemWatcher_Changed;
}
public byte[] Content
{
get
{
using (FileStream fs = new FileStream(FileName,FileMode.Open))
{
return fs.ReadBytes((int)fs.Length);
}
}
set
{
using (FileStream fs = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write))
{
fs.Position = 0;
fs.WriteBytes(value);
}
}
}
void FileSystemWatcher_Changed(object sender, FileSystemEventArgs e)
{
Changed?.Invoke(sender, e);
}
public void Dispose()
{
fileSystemWatcher.Dispose();
}
}
}