`

监控文件夹的变化

    博客分类:
  • C#
阅读更多
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;

namespace FileWatch
{
    public partial class FrmFileWatch : Form
    {
        /// <summary>
        /// 监控文件夹的对象
        /// </summary>
        private readonly FileSystemWatcher fileWatcher;

        public FrmFileWatch()
        {
            InitializeComponent();

            fileWatcher = new FileSystemWatcher();
            //当 Changed、Created、Deleted 和 Renamed 事件由可见 Windows 窗体组件(如 Button)处理时,通过系统线程池访问组件可能不起作用或者导致异常。若要避免这种情况,请将 SynchronizingObject 设置为 Windows 窗体组件,这样将引起在创建组件的同一线程上调用处理 Changed、Created、Deleted 和 Renamed 事件的方法。
            fileWatcher.SynchronizingObject = this;

            //注册事件
            fileWatcher.Created += fileWatcher_Created;
            fileWatcher.Deleted += fileWatcher_Deleted;
            fileWatcher.Changed += fileWatcher_Changed;
            fileWatcher.Renamed += fileWatcher_Renamed;
        }

        #region 监控文件夹回调函数
        /// <summary>
        /// 创建回调函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void fileWatcher_Created(object sender, FileSystemEventArgs e)
        {
            lbChangedFile.Items.Add("创建  " + e.FullPath);
            lbChangedFile.SelectedIndex = lbChangedFile.Items.Count -1;
        }
        /// <summary>
        /// 删除回调函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void fileWatcher_Deleted(object sender, FileSystemEventArgs e)
        {
            lbChangedFile.Items.Add("删除  "+ e.FullPath);
            lbChangedFile.SelectedIndex = lbChangedFile.Items.Count - 1;
        }
        /// <summary>
        /// 修改回调函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void fileWatcher_Changed(object sender, FileSystemEventArgs e)
        {
            lbChangedFile.Items.Add("修改  "+ e.FullPath);
            lbChangedFile.SelectedIndex = lbChangedFile.Items.Count - 1;
        }
        /// <summary>
        /// 重命名回调函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void fileWatcher_Renamed(object sender, RenamedEventArgs e)
        {
            lbChangedFile.Items.Add(e.OldFullPath+"  重命名为  "+ e.FullPath);
            lbChangedFile.SelectedIndex = lbChangedFile.Items.Count - 1;
        }
        #endregion

        #region 浏览
        private void btnBrowse_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();

            if (DialogResult.OK != folderBrowserDialog.ShowDialog()) return;

            string path = folderBrowserDialog.SelectedPath;
            if (!string.IsNullOrEmpty(path.Trim()))
            {
                txtPath.Text = path;
            }
        }
        #endregion

        #region 监控
        private void btnFileWatch_Click(object sender, EventArgs e)
        {
            if (!Directory.Exists(txtPath.Text.Trim()))
            {
                MessageBox.Show(@"该文件夹不存在!", @"信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            //开始监控指定的文件夹
            fileWatcher.Path = txtPath.Text.Trim();
            fileWatcher.EnableRaisingEvents = true;

            MessageBox.Show(string.Format(@"文件夹【{0}】已处于监控状态!", txtPath.Text.Trim()), @"信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

        }
        #endregion

        #region 窗体关闭时释放资源
        private void FrmFileWatch_FormClosed(object sender, FormClosedEventArgs e)
        {
            fileWatcher.EnableRaisingEvents = false;
            fileWatcher.Dispose();
        }
        #endregion
    }
}

 

分享到:
评论

相关推荐

    监控文件夹内的文件变化

    "Folder Notify"这个名字暗示了一个可能的实现,即一个简单的文件夹通知工具或示例代码,它演示了如何监控文件夹变化并触发相应操作。实际开发中,你可以根据这个思路,结合具体语言和库的特性,构建自己的文件变化...

    监控文件夹变化(FolderChangesView)v1.62绿色中文版

    监控文件夹变化(FolderChangesView)是一款实用的系统工具,主要功能是实时监控指定文件夹内的文件和子文件夹的变化情况。v1.62版本是该软件的一个更新,提供了中文界面,方便中国用户使用。它能够记录并显示文件夹内...

    folderchangesview(监控文件夹变化软件) v1.68 中文版

    《FolderChangesView:高效监控文件夹变化的利器》 在日常的计算机操作中,无论是程序开发、数据分析还是系统管理,我们时常需要跟踪和记录文件夹内的文件变化情况。FolderChangesView,这款小巧而强大的工具,正是...

    监控文件夹中文件的变化

    监控文件夹变化常用于自动化任务,比如: 1. 数据备份:一旦检测到文件变化,立即进行备份。 2. 日志分析:实时读取日志文件的新增内容,快速分析问题。 3. 文件同步:在多台机器间保持文件夹同步。 四、性能优化 ...

    VB监控指定文件夹(源码)

    在这个案例中,它可能包含了监控文件夹变化的核心逻辑。VB提供了`FileSystemObject`对象,它是`Scripting`库的一部分,可以通过这个对象来访问和操作文件系统。例如,可以使用`Folder`对象的`Watch`方法来监视一个...

    delphi 监视文件夹改动

    `TFileWatcher`是VCL库的一部分,它简化了文件和文件夹变化的观察过程。而`FindFirstChangeNotification`是Windows API函数,能直接监听文件系统变更事件,更底层,灵活性更高。 2. **组件使用**: - **...

    监控文件夹内的文件的变化(Dir Watcher).

    提供的"Demo"很可能是用某种编程语言(如Python、Java、C#等)实现的一个示例程序,用于演示如何使用Dir Watcher库来监控文件夹变化。它可能包括以下部分: 1. 初始化:设置要监控的文件夹路径,并配置感兴趣的事件...

    监控文件夹

    2. 进程同步:在多进程或分布式系统中,监控文件夹变化可确保所有组件对文件更新保持一致。 3. 日志记录:对于日志文件,监控可以帮助收集和分析应用程序的运行状态。 4. 自动备份:自动备份系统可以通过监控文件夹...

    C#监控文件夹变化的方法

    在C#编程中,监控文件夹变化是一项常用的功能,它可以帮助开发者实时跟踪文件或文件夹的创建、删除和重命名等操作。实现这一功能的关键在于使用`System.IO.FileSystemWatcher`类,该类提供了丰富的事件和属性,使得...

    监听目录 文件变化 vbs实现

    本来以为coffee 一次只能监听一个js文件的变化自动编译,实际上是可以监听目录的。。。于是自己写了个vbs脚本,监听某目录下所有coffee文件,如有变化自动编译成js。 原理是无限循环扫描目录,比对coffee文件MD5值...

    QFileSystemWatcher 监控文件夹下的文件和文件夹的变化

    注:如果因为目录变更(删除、更改等)引起的该目录内的子文件和子文 件夹的变更(删除改变等)时,操作系统只提供该目录内一级目录下的 文件、文件夹变更的上报信息,若文件夹中包含多级子文件夹以及子文件信息, ...

    delphi 实现文件夹内容监控

    在"DirMonitor"这个项目中,很可能已经封装了上述过程,提供了一个方便的接口供用户配置监控文件夹和设置日志记录选项。源代码可能包含了类设计,如`TDirectoryMonitor`,该类负责初始化、处理变更和日志写入的逻辑...

    linux下监控文件夹内变化

    本文将详细介绍如何利用Inotify机制在Linux下实现对文件夹变化的监控,并结合提供的资源进行学习。 Inotify是Linux内核提供的一种强大的文件系统事件监控接口。它允许用户空间的应用程序监听文件系统中的各种事件,...

    易语言监控文件夹变动

    易语言 监控文件夹变动的源代码 易语言 监控文件夹变动的源代码

    PowerShell脚本监控文件夹变化实例

    本文介绍使用PowerShell来监视一个指定的文件夹,包括新建文件、删除文件、重命名文件等操作均会被监控或监视。本文使用了System.IO.FileSystemWatcher这个.NET对象。首先,我们来看看程序: 代码如下: # 定义要...

    目录监控 监控文件夹

    3. 系统服务:Windows的计划任务或Linux的服务,定期执行监控脚本,检查文件夹变化。 4. 集成解决方案:使用专门的监控软件,如Nagios、Zabbix等,它们通常提供插件或配置选项来监控文件夹。 五、监控文件夹的注意...

    监视文件和文件夹系统变化情况(2.0)

    在IT领域,尤其是在软件开发中,实时监控文件和文件夹的变化是一项重要的任务。"监视文件和文件夹系统变化情况(2.0)"的主题涉及到一种技术,即使用`FileSystemWatcher`类来实现这一功能。`FileSystemWatcher`是.NET ...

    vb.net监控文件夹文件变动

    在VB.NET 2008环境下,开发一个能够监控文件夹内文件变动的应用程序是一项实用的任务。这样的程序可以帮助开发者或系统管理员实时跟踪文件系统的变化,例如检测新文件的添加、现有文件的修改或删除等事件。以下是...

Global site tag (gtag.js) - Google Analytics