C#编写一个简易的文件监控系统

Posted CSharp学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#编写一个简易的文件监控系统相关的知识,希望对你有一定的参考价值。

今天总结的是如何利用C#编写一个简单的文件监控系统(参考《C#入门经典》);

1、新建一个WPF应用,并命名FileWatch,界面如下:

XAML代码如下:
  
    
    
  
<Window x:Class="FileWatch.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:FileWatch" Title="File Monitor" Height="160" Width="300"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition/> </Grid.RowDefinitions> <Grid Margin="4"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition Width='Auto' /> </Grid.ColumnDefinitions> <TextBox Name="LocationBox" TextChanged="LocationBox_TextChanged"/> <Button Name="BrowseButton" Grid.Column="1" Content="Browse..." Click="BrowseButton_Click" /> </Grid> <Button Name="WatchButton" Content="Watch!" Margin="4" Grid.Row="1" Click="WatchButton_Click" IsEnabled="False" />         <ListBox Name="WatchOutput" Margin="4" Grid.Row="2" /> </Grid> </Window>

2、在Main Window.xaml.cs中添加下面的using指令:
  
    
    
  
using System.IO; using Microsoft.Win32;

3、在Main Window类中添加FileSystemWatch类型的一个字段
  
    
    
  
namespace FileWatch { public partial class MainWindow : Window { private FileSystemWatcher watcher;

4、在Main Window类中添加AddMessage方法,后台线程向输出添加信息
  
    
    
  
private void AddMessage(string name) { Dispatcher.BeginInvoke(new Action( () => WatchOutput.Item.Insert( 0,message))); }

5、初始化FileSystemWatch对象,以及将事件关联到Addmessage()方法调用;
  
    
    
  
public MainWindow() { InitializeComponent(); watcher = new FileSystemWatcher(); watcher.Deleted += (s, e) => AddMessage($"File: {e.FullPath} Deleted"); watcher.Renamed += (s, e) => AddMessage($"File Renamed from {e.OldName} to {e.FullPath}"); watcher.Changed += (s, e) => AddMessage($"File: {e.FullPath} {e.ChangeType.ToString()}"); watcher.Created += (s, e) => AddMessage($"File: {e.FullPath} Created"); }

6、添加Browse按钮的Click事件处理程序
  
    
    
  
private void BrowseButton_Click(object sender, RoutedEventArgs e) { OpenFileDialog dialag = new OpenFileDialog(); if (dialag.ShowDialog(this) ==true) { LocationBox.Text = dialag.FileName; } }

7、添加TextBox的事件处理程序TextChanged
  
    
    
  
private void LocationBox_TextChanged(object sender, TextChangedEventArgs e) { WatchButton.IsEnabled = !string.IsNullOrEmpty(LocationBox.Text); }

8、添加Watch!按钮的Click事件
  
    
    
  
private void WatchButton_Click(object sender, RoutedEventArgs e) { watcher.Path = System.IO.Path.GetDirectoryName(LocationBox.Text); watcher.Filter = System.IO.Path.GetFileName(LocationBox.Text); watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.Size; AddMessage("Watching" + LocationBox.Text); watcher.EnableRaisingEvents = true; }

9、创建目录C:\TempWatch,在该目录创建文件temp.txt,就可以运行该程序,监控temp.txt文件了;


快来关注一起来学习C#吧

以上是关于C#编写一个简易的文件监控系统的主要内容,如果未能解决你的问题,请参考以下文章

C#简易商城收银系统v1.0(2-1)

C#程序员经常用到的10个实用代码片段 - 操作系统

优化 C# 代码片段、ObservableCollection 和 AddRange

C#简易记事本的实现

VB顺序文件案例:简易文本编辑器

是否可以动态编译和执行 C# 代码片段?