用FileSystemWatcher组件监视系统日志文件是否被更改-C#学习进阶

实例说明

本实例使用FileSystemWatcher组件监视系统日志文件是否被更改。运行程序,单击“开始监视文件”按钮,启动FileSystemWatcher组件监视本机的系统日志文件。系统日志文件被删除、修改和创建时,都会给出相应的提示。实例运行结果如图所示。

用FileSystemWatcher组件监视系统日志文件是否被更改-C#学习进阶

实现本实例功能主要用到FileSystemWatcher组件的Path属性、Filter属性、EndInit方法、Created事件、Changed事件、Deleted事件、Environment类的SystemDirectory属性。下面分别进行介绍。

(1)Path属性

此属性获取或设置要监视的目录的路径。其语法格式如下:

public string Path { get; set; }

l 属性值:要监视的路径。默认值为空字符串(“”)。

(2)Filter属性

此属性获取或设置筛选字符串,用于确定在目录中监视哪些文件。其语法格式如下:

public string Filter { get; set; }

属性值:筛选器字符串。默认值为“*.*”(监视所有文件)。

(3)EndInit方法

此方法结束在窗体上使用或由另一个组件使用的FileSystemWatcher的初始化,初始化发生在运行时。其语法格式如下:

public void EndInit ( )

(4)Created事件

此事件当在指定Path中创建文件和目录时发生。其语法格式如下:

public event FileSystemEventHandleCreated

(5)Changed事件

此事件当更改指定Path中的文件和目录时发生。其语法格式如下:

public eventFileSystemEventHandlerChanged

(6)Deleted事件

此事件删除指定Path中的文件或目录时发生。其语法格式如下:

public event FileSystemEventHandler Deleted

(7)Environment类

此类提供有关当前环境和平台的信息以及操作它们的方法。其常用属性及方法说明如表1、表所示。

属 性 名 称

说 明

CommandLine

获取该进程的命令行

CurrentDirectory

获取和设置当前目录(即该进程从中启动的目录)的完全限定路径

ExitCode

获取或设置进程的退出代码

MachineName

获取此本地计算机的 NetBIOS 名称

NewLine

获取为此环境定义的换行字符串

SystemDirectory

获取系统目录的完全限定路径

TickCount

获取系统启动后经过的毫秒数

UserDomainName

获取与当前用户关联的网络域名

UserInteractive

获取一个值,用以指示当前进程是否在用户交互模式中运行

UserName

获取启动当前线程的人的用户名

WorkingSet

获取映射到进程上下文的物理内存量

Environment类常见方法及说明

方 法 名 称

说 明

Exit

终止此进程并为基础操作系统提供指定的退出代码

ExpandEnvironmentVariables

将嵌入到指定字符串中的每个环境变量的名称替换为该变量的值的等效字符串,然后返回结果字符串

FailFast

终止进程但不执行任何活动 try-finally 块或终结器

GetCommandLineArgs

返回包含当前进程的命令行参数的字符串数组

GetEnvironmentVariables

检索所有环境变量名及其值

GetFolderPath

获取指向由指定枚举标识的系统特殊文件夹的路径

GetLogicalDrives

返回包含当前计算机中的逻辑驱动器名称的字符串数组

(8)SystemDirectory属性

此属性获取系统目录的完全限定路径。其语法格式如下:

public static string SystemDirectory { get; }

属性值:包含目录路径的字符串。

实现过程

(1)新建一个Windows应用程序,将其命名为VerdictEconomyLogWetherAmendOrNot,默认窗体为Form1。

(2)在Form1窗体中,主要添加一个FileSystemWatcher组件,用来监视系统日志文件;添加一个Button控件,用来监视日志文件操作;添加一个TextBox控件,用来显示本机系统日志文件的路径;添加一个ListBox控件,用来显示日志提示信息。

(3)主要程序代码。

加载文件指定系统日志文件的路径的实现代码如下:

private void Form1_Load(object sender, EventArgs e)

{

    textBox1.Text = Environment.SystemDirectory + "\\config";             //设置文件路径

    textBox1.Enabled = false;                                                //设置textBox1为不可用状态

}

启动FileSystemWatcher组件开始操作的实现代码如下:

private void button1_Click(object sender, EventArgs e)

{

    fileSystemWatcher1.Path = textBox1.Text;                //设置要监视的文件的路径

    this.fileSystemWatcher1.Filter = "*.Evt";     //此属性获取或设置筛选字符串,用于确定在目录中监视哪些文件

    this.fileSystemWatcher1.EndInit( );             //结束fileSystemWatcher1的初始化过程

}

创建日志文件时给出提示的实现代码如下:

private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e)

{

    listBox1.Items.Add("日志文件:" + e.FullPath+"被创建");          //向listBox1中添加创建的内容

}

修改日志文件时给出提示的实现代码如下:

private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)

{

    listBox1.Items.Add("日志文件:" + e.FullPath + "被更改");        //向listBox1中添加修改信息

}

删除日志文件时给出提示的实现代码如下:

private void fileSystemWatcher1_Deleted(object sender, System.IO.FileSystemEventArgs e)
{
listBox1.Items.Add("日志文件:" + e.FullPath + "被删除"); //向listBox1中添加删除信息
}