我想让FileSystemWatcher监视一个文件夹,一旦在里面创建了一个文件来获取文件名,那么File.OpenRead()和StreamReader就可以读取该文件了
我见过很多例子但不完全是我的案例:
public static void FileWatcher()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"C:\Users\";
watcher.NotifyFilter = NotifyFilters.LastWrite;
watcher.Filter = "*.txt";
watcher.Created += new FileSystemEventHandler(OnCreated);
watcher.EnableRaisingEvents = true;
}
public static void OnCreated(object source, FileSystemEventArgs e)
{
string filename = Path.GetFileName(e.FullPath);
}
我的问题是如何获取将在该文件夹中创建的文件名并将其路径和文件传递给,因为事件方法是无效的:
const string fileName = @"C:\Users\.txt";
using (var stream = File.OpenRead(fileName))
using (var reader = new StreamReader(stream))
任何帮助表示赞赏!
答案 0 :(得分:1)
我建议将文件处理封装在一个单独的类中。
public class FileProcessor
{
public void ProcessFile(string filePath)
{
using (var stream = File.OpenRead(filePath))
//etc...
}
}
然后实例并调用它。
public static void OnCreated(object source, FileSystemEventArgs e)
{
var processor = new FileProcessor();
processor.ProcessFile(e.FullPath);
}
或者,如果您的方法与Created事件属于同一类
YourMethodName(e.FullPath);
你的方法应该有这样的签名
void YourMethodName (string filePath)
{
//Process file
}