c++文件监控之FileSystemWatcher

 更新时间:2019年04月07日 22:50:10   投稿:mdxy-dxy  
为了监控web程序的静态文件是否被恶意改动,所以学习了一下FileSystemWatcher 类对文件的监控,由于还在初级阶段,这里只贴一下关于FileSystemWatcher学习的一些代码

具体代码如下:

#using <System.dll>
#include <iostream>

using namespace std;
using namespace System;
using namespace System::IO;
using namespace System::Security::Permissions;

public ref class Watcher
{
private:
  // Define the event handlers.
  static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
  {
   // Specify what is done when a file is changed, created, or deleted.
   Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
  }

  static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
  {
   // Specify what is done when a file is renamed.
   Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
  }

public:
  [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
  int static run()
  {
   //array<String^>^args = System::Environment::GetCommandLineArgs();
   //创建一个FileSystemWatcher并设置它的属性.
   FileSystemWatcher^ fsWatcher = gcnew FileSystemWatcher( );
   fsWatcher->Path = "C:\\files";

   /* Watch for changes in LastAccess and LastWrite times, and
     the renaming of files or directories. */
   fsWatcher->NotifyFilter = static_cast<NotifyFilters>(//监听文件的以下属性 按需求添加 这里我添加了一些常用的
                NotifyFilters::LastAccess | //文件或文件夹上一次打开的日期。 
                NotifyFilters::LastWrite | //上一次向文件或文件夹写入内容的日期
                NotifyFilters::FileName | //文件名
                NotifyFilters::DirectoryName | //目录名
                NotifyFilters::Size); //大小

   //监听子目录
   fsWatcher->IncludeSubdirectories = true;
   // Only watch text files.
   //fsWatcher->Filter = "*.txt";

   // Add event handlers.
   fsWatcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
   fsWatcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
   fsWatcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
   fsWatcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

   // Begin watching.
   fsWatcher->EnableRaisingEvents = true;

   // Wait for the user to quit the program.
   Console::WriteLine( "Press \'q\' to quit the sample." );
   while ( Console::Read() != 'q' );

   return 0;
  }
};

int main() {
  Watcher::run();
}

过程 1.首先创建FileSystemWatcher 对象  用来设置一些属性以及添加监听事件

   2.设置监听目录

   3.设置监听文件的属性

   4.设置监听子目录

   5.添加监听事件

   6.开始监听

上面的sample代码可以在MSDN上找到,如果有不确定的地方,可以查看文档

相关文章

  • C语言中的隐式函数声明

    C语言中的隐式函数声明

    在c语言里面开来还是要学习c++的编程习惯,使用函数之前一定要声明。不然,即使编译能通过,运行时也可能会出一些莫名其妙的问题。
    2016-01-01
  • C++ LeetCode1827题解最少操作使数组递增

    C++ LeetCode1827题解最少操作使数组递增

    这篇文章主要为大家介绍了C++ LeetCode1827题解最少操作使数组递增示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • C语言实现猜数字小游戏

    C语言实现猜数字小游戏

    这篇文章主要为大家详细介绍了C语言实现猜数字小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • C语言贪吃蛇经典小游戏

    C语言贪吃蛇经典小游戏

    这篇文章主要为大家详细介绍了C语言贪吃蛇经典小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 如何在C++中实现按位存取

    如何在C++中实现按位存取

    实现紧凑存取,不是按一个字节一个字节地存取,而是按位存取,本文就是介绍了如何在C++中实现按位存取,需要的朋友可以参考下
    2015-07-07
  • c++中容器之总结篇

    c++中容器之总结篇

    本文总结了C++的容器,其大致可以分为两个大类:顺序容器和关联容器,需要了解的朋友可以参考下
    2015-07-07
  • C++ 中引用与指针的区别实例详解

    C++ 中引用与指针的区别实例详解

    这篇文章主要介绍了C++ 中引用与指针的区别实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • C++中类模板的应用你了解多少

    C++中类模板的应用你了解多少

    这篇文章主要为大家详细介绍了C++中类模板的应用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C++中vector和数组之间的转换及其效率问题详解

    C++中vector和数组之间的转换及其效率问题详解

    c++ vector转数组是一种将vector容器的元素转换为数组的方法,主要能帮助提高程序的性能和效率,下面这篇文章主要给大家介绍了关于C++中vector和数组之间的转换及其效率问题的相关资料,需要的朋友可以参考下
    2023-03-03
  • Qt实现线程与定时器的方法

    Qt实现线程与定时器的方法

    本文主要介绍了Qt实现线程与定时器的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论