C#查找文件、複製文件

在C盤所在路徑1 搜指擴展名的所有文件,得到在所在文件的路徑,

然後用去掉擴展名的文件名,去搜D盤相同的路徑下是否有這個文件,

再將這個文件複製到C盤所在文件的路徑下

 

  private void btnFindTxt_Click(object sender, EventArgs e)
        {
            //水平進度
            //最大 最小值
    
            progressBarControl1.Properties.Minimum = 0;

            progressBarControl1.Position = 0;//當前值
            progressBarControl1.Properties.ShowTitle = true;//是否顯示進度數據
            //是否顯示百分比
            progressBarControl1.Properties.PercentView = true;

             //Stopwatch提供一組方法和屬性,可用於準確地測量運行時間
             Stopwatch sw = new Stopwatch();
             sw.Start();

             string filepath = this.txtPath.Text.Trim();
             string filepathD = this.txtPathD.Text.Trim();
             string filename = this.txtFile.Text.Trim();   //如果模糊查找則文件名用*,如 *.xls、*bbb.rar
             int n = Convert.ToInt32(txtInt.Text.Trim());

             //string[] files = Directory.GetFiles(filepath + @"\", "*.xls");
             //string[] files = Directory.GetFiles(filepath + @"\", filename);  //查找時不包括子目錄
             try
             {
                 string[] files = Directory.GetFiles(filepath + @"\", filename, SearchOption.AllDirectories);   //查找時包括子目錄
                 foreach (string file in files)
                 {
                     //string fileD = file.Substring(0, n);  //取文件名的前n個字符
                     string filenameD = Path.GetFileNameWithoutExtension(file);
                     string[] fileDs = Directory.GetFiles(filepathD + @"\", filenameD, SearchOption.AllDirectories);   //包括子目錄

                     foreach (string fileD in fileDs)
                     {
                         string pathD = Path.GetDirectoryName(fileD) + @"\";
                         string pathC = "C" + pathD.Remove(0, 1);
                         saveFile(pathC, fileD);
                     }
                 }

                 sw.Stop();
                 TimeSpan dt = sw.Elapsed;
                 progressBarControl1.Properties.Maximum = Convert.ToInt32(dt.TotalMilliseconds);    //把用時 變成毫秒再轉化爲整數int


                 for (int i = 0; i < progressBarControl1.Properties.Maximum; i++)
                 {
                     //處理當前消息隊列中的所有windows消息
                     Application.DoEvents();
                     //當前線程掛起指定的時間,這個是爲了演示
                     //System.Threading.Thread.Sleep(12);
                     //執行步長
                     progressBarControl1.PerformStep();
                 }
                 MessageBox.Show("查找並複製成功");

             }
             catch
             {
                 MessageBox.Show("數據異常或者有受權限限制受讀寫保護的子文件夾!");
             }            
        }


        public void saveFile(string path, string fileName)
        {
            FileInfo file = new FileInfo(fileName);
            string newName = file.Name;
            file.CopyTo(path + @"\" + newName, true);
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章