using namespace System::IO;
using namespace System::Threading;
namespace FileMonitor {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Form1 摘要
///
/// 警告: 如果更改此类的名称,则需要更改
/// 与此类所依赖的所有 .resx 文件关联的托管资源编译器工具的
/// “资源文件名”属性。否则,
/// 设计器将不能与此窗体的关联
/// 本地化资源正确交互。
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: 在此处添加构造函数代码
//
}
protected:
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
protected:
private: System::Windows::Forms::TextBox^ textBox1;
private: System::IO::FileSystemWatcher^ fileSystemWatcher1;
private: System::Windows::Forms::Label^ label1;
private:
/// <summary>
/// 必需的设计器变量。
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->fileSystemWatcher1 = (gcnew System::IO::FileSystemWatcher());
this->label1 = (gcnew System::Windows::Forms::Label());
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->fileSystemWatcher1))->BeginInit();
this->SuspendLayout();
//
// button1
//
this->button1->Location = System::Drawing::Point(98, 178);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 0;
this->button1->Text = L"Monitor";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(67, 105);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(155, 21);
this->textBox1->TabIndex = 1;
this->textBox1->Text = L"d:\\temp";
//
// fileSystemWatcher1
//
this->fileSystemWatcher1->EnableRaisingEvents = true;
this->fileSystemWatcher1->SynchronizingObject = this;
this->fileSystemWatcher1->Created += gcnew System::IO::FileSystemEventHandler(this, &Form1::fileSystemWatcher1_Created);
this->fileSystemWatcher1->Deleted += gcnew System::IO::FileSystemEventHandler(this, &Form1::fileSystemWatcher1_Deleted);
this->fileSystemWatcher1->Changed += gcnew System::IO::FileSystemEventHandler(this, &Form1::fileSystemWatcher1_Changed);
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(65, 69);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(41, 12);
this->label1->TabIndex = 2;
this->label1->Text = L"label1";
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(292, 266);
this->Controls->Add(this->label1);
this->Controls->Add(this->textBox1);
this->Controls->Add(this->button1);
this->Name = L"Form1";
this->Text = L"Form1";
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->fileSystemWatcher1))->EndInit();
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
String^ path=textBox1->Text;
fileSystemWatcher1->Path=path;
fileSystemWatcher1->EnableRaisingEvents=true;
String^ path1 = "d:\\temp\\log.txt";
FileInfo^ fi1 = gcnew FileInfo( path );
// if ( !fi1->Exists )
// {
// //Create a file to write to.
//StreamWriter^ sw = fi1->CreateText();
//try
//{
//
// sw->WriteLine( "start:" );
//}
//finally
//{
//if ( sw )
//delete (IDisposable^)sw;
//}
//}
}
private: System::Void fileSystemWatcher1_Created(System::Object^ sender, System::IO::FileSystemEventArgs^ e) {
///////////////////
label1->Text =String::Concat("File: " , e->FullPath , " " , e->ChangeType);
String^ content = String::Concat("File: " , e->FullPath , " " , e->ChangeType);
// Open an existing file, or create a new one.
FileInfo^ fi = gcnew FileInfo( "temp.txt" );
// Create a writer, ready to add entries to the file.
StreamWriter^ sw = fi->AppendText();
sw->WriteLine( content );
sw->Flush();
sw->Close();
//Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
private: System::Void fileSystemWatcher1_Deleted(System::Object^ sender, System::IO::FileSystemEventArgs^ e) {
///////////////////
label1->Text =String::Concat("File: " , e->FullPath , " " ,e->ChangeType);
String^ content = String::Concat("File: " , e->FullPath , " " , e->ChangeType);
// Open an existing file, or create a new one.
FileInfo^ fi = gcnew FileInfo( "temp.txt" );
// Create a writer, ready to add entries to the file.
StreamWriter^ sw = fi->AppendText();
sw->WriteLine( content );
sw->Flush();
sw->Close();
}
private: System::Void fileSystemWatcher1_Changed(System::Object^ sender, System::IO::FileSystemEventArgs^ e) {
//////////
label1->Text =String::Concat("File: " , e->FullPath , " " ,e->ChangeType);
String^ content = e->FullPath; //mypath + "\\" + cr.Name;
FileInfo^ fi = gcnew FileInfo(content);
if (!fi->Exists)
{
//Console.WriteLine("file not exits!!");
}
HELLO: try
{
fi->OpenRead();
}
catch (IOException^ ex)
{
//Console.WriteLine(ex.Message);
Thread::Sleep(3000);
goto HELLO;
}
label1->Text ="ok";
String^ path1 = "d:\\temp\\cp";
int a=content->LastIndexOf("\\");
path1=path1+content->Substring(a);
//FileInfo^ fi2 = gcnew FileInfo( path1 );
fi->CopyTo( path1 );
}
};