C#帮助-FileSystemWatcher类
我有以下代码,尽管我正在尝试输出:C#帮助-FileSystemWatcher类,c#,.net,windows,C#,.net,Windows,我有以下代码,尽管我正在尝试输出: fileWriter.Write(e.OldName + " was renamed to " + e.Name + Environment.NewLine); 虽然我得到以下错误: 当前上下文中不存在名称“e” 我的代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace Fi
fileWriter.Write(e.OldName + " was renamed to " + e.Name + Environment.NewLine);
虽然我得到以下错误:
当前上下文中不存在名称“e”
我的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace FileWatcherr
{
class Program
{
static void Main(string[] args)
{
string dirPath = "C:\\";
FileSystemWatcher fileWatcher = new FileSystemWatcher(dirPath);
fileWatcher.IncludeSubdirectories = true;
fileWatcher.Filter = "*.exe";
// fileWatcher.Filter = "C:\\$Recycle.Bin";
// fileWatcher.Changed += new FileSystemEventHandler(FileWatcher_Changed);
fileWatcher.Created += new FileSystemEventHandler(FileWatcher_Created);
// fileWatcher.Deleted += new FileSystemEventHandler(FileWatcher_Deleted);
// fileWatcher.Renamed += new RenamedEventHandler(FileWatcher_Renamed);
fileWatcher.EnableRaisingEvents = true;
// updated code
using(StreamWriter fileWriter = new StreamWriter("test2.txt"))
{
var data = true;
fileWriter.Write(e.OldName + " was renamed to " + e.Name + Environment.NewLine);
}
Console.ReadKey();
}
static void FileWatcher_Renamed(object sender, RenamedEventArgs e)
{
Console.WriteLine(e.OldName + " was renamed to " + e.Name);
}
static void FileWatcher_Deleted(object sender, FileSystemEventArgs e)
{
Console.WriteLine(e.Name + " was deleted");
}
static void FileWatcher_Created(object sender, FileSystemEventArgs e)
{
Console.WriteLine("C:\\" + e.Name);
}
static void FileWatcher_Changed(object sender, FileSystemEventArgs e)
{
Console.WriteLine(e.Name + "");
}
}
}
从代码中可以看出,main方法中包含重命名事件的代码,该方法不包含FileSystemEventArgs对象(称为“e”)
我认为要解决这个问题,您应该将“FileWatcher\u重命名”的主体更改为using块。e引用事件方法的
EventArgs
参数
如果你这样说:
using(StreamWriter fileWriter = new StreamWriter("test2.txt"))
{
var data = true;
fileWriter.Write(e.OldName + " was renamed to " + e.Name + Environment.NewLine);
}
在
static void FileWatcher_Renamed(object sender, RenamedEventArgs e)
方法,它应该可以工作。这正是错误所说的。主方法中没有名为“e”的变量。@JackMc如何将“e”变量添加到主方法?星际迷航闪回;在这篇文章中,'-to-Programmer'的比例很高。制作信息技术走吧,我觉得你是新来的。也许您应该首先回顾事件处理的基本知识。您好,我如何在main方法中添加名为e的FileSystemEventArgs对象?@Michael FileSystemEventArgs对象将传递给FileSystemWatcher类的不同事件。我在上面的一个解决方案中进行了编辑。“我认为要解决这个问题,您应该将“FileWatcher_重命名”的主体更改为using块。”我这样做了,它复制ok,但不输出文件:S@Michael:确保代码中的这一行未被注释掉:fileWatcher.Rename+=新重命名的EventHandler(fileWatcher_重命名);