標籤:
寫移動檔案練習時候發現Directory.move只能在同一個盤符進行操作,於是度娘一下,還真有人也遇到這種情況,搜尋一番發現一位仁兄寫的一個跨盤符移動的demo很好分享一下,原文如下:
1 public void MoveDirectory(string strSourceDir, string strDestDir, bool bDelSource) 2 { 3 if (Directory.Exists(strSourceDir)) 4 { 5 if (Directory.GetDirectoryRoot(strSourceDir) == Directory.GetDirectoryRoot(strDestDir)) 6 { 7 Directory.Move(strSourceDir, strDestDir); 8 } 9 else10 {11 try12 {13 CopyDirectory(new DirectoryInfo(strSourceDir), new DirectoryInfo(strDestDir));14 if (bDelSource) Directory.Delete(strSourceDir, true);15 }16 catch (Exception subEx)17 {18 throw subEx;19 }20 }21 }22 }23 private void CopyDirectory(DirectoryInfo diSourceDir, DirectoryInfo diDestDir)24 {25 if (!diDestDir.Exists) diDestDir.Create();26 FileInfo[] fiSrcFiles = diSourceDir.GetFiles();27 foreach (FileInfo fiSrcFile in fiSrcFiles)28 {29 fiSrcFile.CopyTo(Path.Combine(diDestDir.FullName, fiSrcFile.Name));30 }31 DirectoryInfo[] diSrcDirectories = diSourceDir.GetDirectories();32 foreach (DirectoryInfo diSrcDirectory in diSrcDirectories)33 {34 CopyDirectory(diSrcDirectory, new DirectoryInfo(Path.Combine(diDestDir.FullName, diSrcDirectory.Name)));35 }36 }37 private void button1_Click(object sender, EventArgs e)38 {39 //MoveFolder1();40 string sNowFile = System.Windows.Forms.Application.StartupPath + "\\seo";41 string sNFile = Environment.SystemDirectory.Replace("system32", "");42 MoveDirectory(sNowFile, sNFile, true);43 }
簡簡單單代碼讓人豁然開朗,其實我們可以換個角度,他進行的是建立路徑去遍曆源地址檔案複製到目的地址,然後刪除原檔案。這樣就解決了,代碼很容易懂贊一下!
C# 跨盤符移動檔案