我自己做了一个播放器,想在“搜索” 按钮事件触发一个搜索本地所有文件和文件夹内的mp3文件放到
ListBox内
另外在做一个progressBar1显示进度和时间
请教大家!

解决方案 »

  1.   

    本帖最后由 caozhy 于 2011-03-19 13:42:13 编辑
      

  2.   

    看错了,应该用 Directory.GetFiles()
      

  3.   


    //获取本地硬盘驱动器 
    private   void   loadLogicDiscs() 

    string[]   localDrives   =   Directory.GetLogicalDrives(); 
    foreach(string   eachDrive   in   localDrives) 

    try 
            {
                string[] dirs = Directory.GetDirectories(eachDrive,"*.mp3");
                foreach (string dir in dirs) 
                {
                    Console.WriteLine(dir);
                }
            } 
            catch (Exception e) 
            {
                Console.WriteLine("The process failed: {0}", e.ToString());
            }

    }
      

  4.   

    晕,受1楼误导了,我7楼的代码错了一个地方,现修正如下:        private void button3_Click(object sender, EventArgs e)
            {
                //获取本地硬盘驱动器 
                string[]   localDrives   =   Directory.GetLogicalDrives(); 
                foreach(string   eachDrive   in   localDrives) 
                {
                   try 
                    {
                        string[] dirs = Directory.GetFiles(@eachDrive,"*.exe");
                        foreach (string dir in dirs) 
                        {
                            richTextBox1.Text += dir+"\n";
                        }
                    } 
                    catch (Exception ex) 
                    {
                       MessageBox.Show("The process failed: {0}", ex.ToString());
                    }
                } 
            }
      

  5.   

    搞定,自己最好加个多线程,否则文件太多容易卡死界面使程序暂时停止响应        private void button3_Click(object sender, EventArgs e)
            {
                //获取本地硬盘驱动器 
                string[]   localDrives   =   Directory.GetLogicalDrives(); 
                foreach(string   eachDrive   in   localDrives) 
                {
                   try 
                    {
                       //获取逻辑驱动器根目录下的所有exe文件。你用的时候改为*.mp3即可,因为exe文件多测试方便
                        string[] dirs = Directory.GetFiles(@eachDrive, "*.exe");
                        foreach (string dir in dirs)
                        {
                            richTextBox1.Text += dir + "\n";
                        }
                        geteachdir(eachDrive);
                    } 
                    catch (Exception ex) 
                    {
                       MessageBox.Show("The process failed: {0}", ex.ToString());
                    }
                } 
            }
            private void geteachdir(string fatherdir)
            {
                string[] dirs = Directory.GetDirectories(fatherdir);
                foreach (string dir in dirs)
                {
                    string[] files = Directory.GetFiles(dir, "*.exe");
                    foreach (string file in files)
                    {
                        richTextBox1.Text += file + "\n";
                        geteachdir(dir);
                    }
                }
            }