2011-05-20 82 views
3

我有以下的代码,虽然我试图输出:C#帮助 - FileSystemWatcher类

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 + ""); 
     } 
    } 
} 
+1

这正是错误所说的。主要方法中没有称为“e”的变量。 – JackMc 2011-05-20 19:14:08

+0

@JackMc如何将“e”变量添加到主方法中? – Michael 2011-05-20 19:15:18

+0

星际迷航闪回; '[Pakled](http://memory-alpha.org/wiki/Pakled)到程序员的比例在这篇文章中是很高的。 Make ... It ... Go ... 2011-05-20 19:28:29

回答

2

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) 

方法,它应该工作。

+0

我已经这样做了,它可以复制,但不输出文件:S – Michael 2011-05-20 19:21:59

+1

@Michael:确保代码中的这一行没有被注释掉:fileWatcher.Renamed + = new RenamedEventHandler(FileWatcher_Renamed); – Bernard 2011-05-20 19:48:47

0

从我可以在代码中看到,你有在不包含FileSystemEventArgs对象(称为“e”)的主方法中的Rename事件的代码

我认为要解决此问题,您应该将“FileWatcher_Renamed”的主体更改为using块。

+0

嗨,如何添加主方法中名为e的FileSystemEventArgs对象? – Michael 2011-05-20 19:17:41

+0

@Michael FileSystemEventArgs对象被传递给FileSystemWatcher类的不同事件。我在上面进行了编辑。 – JackMc 2011-05-20 19:19:29

+0

我没有看到解决方案? – Michael 2011-05-20 19:27:08