|
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 );
} };
|