查找文件

     using namespace System::Diagnostics;
    using namespace System::IO;

 

 

    private:static ArrayList^ MyFindPath = gcnew ArrayList();
    private:static ArrayList^ MyExtsList = gcnew ArrayList();
    private:static array<String^>^ MyDefaultExtensions ={".com", ".pdb", ".exe", ".bat", ".cmd", ".vbs", ".cs", ".vbe", ".js", ".wsf", ".wsh", ".c", ".h", ".cpp",};
    private:static array<wchar_t>^ mySemicolon = {';'};
    private:static int myExtsCount = 0;
    private:static int myDirsCount = 0;
    private:static bool myFirstMatchOnly = false;


//添加路径数据
    public: static void addElementToList(String^ element, ArrayList^ arraylist)
            {
                for (int i = 0; i < arraylist->Count; i++)
                {
                    if( 0 == String::Compare(element, (String^)arraylist[i], true))
                        return;
                }
                arraylist->Add(element);
            }

            //添加指定路径数据
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
                 //添加本程序文件所在目录
                 System::Diagnostics::Process^ MyCurrentProcess = System::Diagnostics::Process::GetCurrentProcess();
                 ProcessModule^ MyProcessModule = MyCurrentProcess->MainModule;
                 String^ MyDir = Path::GetDirectoryName(MyProcessModule->FileName);
                 if((MyDir->Length > 1) && ("//" == System::Convert::ToString(MyDir[MyDir->Length - 1])))
                     MyDir->Remove(MyDir->Length -1, 1);
                 MyFindPath->Add(MyDir);
                 //添加当前目录和系统目录
                 String^ MyCurrentDir = Environment::CurrentDirectory;
                 if((MyCurrentDir->Length > 1) && ("//" == System::Convert::ToString(MyCurrentDir[MyCurrentDir->Length - 1])))
                     MyCurrentDir->Remove(MyCurrentDir->Length- 1, 1);
                 addElementToList(MyCurrentDir, MyFindPath);

                 String^ MySystemDir = Environment::SystemDirectory;
                 if((MySystemDir->Length > 1) && ("//" == System::Convert::ToString(MySystemDir[MySystemDir->Length - 1])))
                     MySystemDir->Remove(MySystemDir->Length - 1, 1);
                 addElementToList(MySystemDir, MyFindPath);
                 //添加windows目录
                 String^ MyWindowsDir = Directory::GetParent(MySystemDir)->FullName;
                 if((MyWindowsDir->Length > 1) && ("//" == System::Convert::ToString(MyWindowsDir[MyWindowsDir->Length - 1])))
                     MyWindowsDir->Remove(MyWindowsDir->Length - 1, 1);
                 addElementToList(MyWindowsDir, MyFindPath);
                 //添加环境变量所指目录
                 String^ MyPathString = Environment::GetEnvironmentVariable("Path");
                 if(MyPathString != String::Empty){
                     array<String^>^ MyPathElements = MyPathString->Split(mySemicolon);
                     int MyPathElementCount = MyPathElements->GetLength(0);
                     for(int i = 0; i < MyPathElementCount; i++){
                         String^ MyElement = System::Convert::ToString(MyPathElements[i]);
                         if((MyElement->Length > 1) && ("//" == System::Convert::ToString(MyElement[MyElement->Length - 1])))
                             MyElement->Remove(MyElement->Length - 1, 1);
                         addElementToList(MyElement, MyFindPath);
                     }
                 }
                 myDirsCount = MyFindPath->Count;
                 //创建文件扩展名列表
                 array<String^>^ MyExtensionArray;
                 String^ MyPathExt = Environment::GetEnvironmentVariable("PathExt");
                 if(MyPathExt == String::Empty)
                     MyDefaultExtensions->CopyTo(MyExtensionArray, 0);
                 else
                     MyExtensionArray = MyPathExt->Split(mySemicolon);
                 myExtsCount = MyExtensionArray->Length;
                 for(int i = 0; i < myExtsCount; i++)
                     addElementToList(MyExtensionArray[i], MyExtsList);
             }

             //开始查找
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
             this->richTextBox1->Text = "";
             this->myFirstMatchOnly = this->checkBox1->Checked;
             if(this->textBox1->Text == System::String::Empty)
                 return;
             for(int i = 0; i < myDirsCount; i++){
                bool MyExist = false;
                String^ MyExtStr = Path::GetExtension(this->textBox1->Text);
                if(MyExtStr != String::Empty){
                    String^ MyFile = String::Format("{0}//{1}", (String^)MyFindPath[i], this->textBox1->Text);
                    if((MyExist = File::Exists(MyFile)))
                    //if(MyExist == File::Exists(MyFile))
                    this->richTextBox1->AppendText(MyFile + "/n");
                }
                else{
                    for(int j = 0; j < myExtsCount; j++){
                        String^ MyFile = String::Format("{0}//{1}{2}", (String^)MyFindPath[i], this->textBox1->Text, MyExtsList);
                        if((MyExist = File::Exists(MyFile))){
                        //if(MyExist == File::Exists(MyFile))
                            this->richTextBox1->AppendText(MyFile + "/n");
                            if(myFirstMatchOnly)
                                break;
                        }
                    }
                }
                if(MyExist && myFirstMatchOnly)
                    break;
             }
         }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值