轉自:https://jhrs.com/2022/45307.html
C#重新命名資料夾
透過C#程式碼對資料夾進行重新命名也是常見功能或需求,而在網上搜尋到的常見程式碼都是透過先建立新目錄,然後移動原來的檔案到新目錄的方式,大概所能見到的程式碼如下所示:
//步驟1,先建立新目錄,當前步驟非必須 Directory.CreateDirectory(destinationDir); //步驟2,找到檔案,並移動 FileInfo file = new FileInfo(srcFileName); file.MoveTo(destFileName);
以前只是常見的示例程式碼,事實上都是需要進行檔案移動操作,那麼有沒有像我們使用滑鼠右鍵,選中資料夾直接重新命名的方法呢?答案是有的,還是利用FileSystem類提供的方法,如下:
//這個就是重新命名目錄的方法,https://jhrs.com(江湖人士,國外網賺)讓你回答,是不是很簡單呢? FileSystem.RenameDirectory(sourceDir, destDir);
C#重新命名檔案
重新命名檔案的需求經常出現在上傳功能時,使用者上傳的檔案伺服器端需要對它進行重新命名,通常會寫出網上常見的類似程式碼:
File.Move(),File.Copy() 版本的:
string src = @"原檔案路徑:C:\jhrs\com\old.file"; string dest = @"新檔案路徑:C:\jhrs\com\new.file"; try { File.Move(src, dest); if (!File.Exists(src)) { Console.WriteLine("jhrs.com提示:檔案重新命名成功."); } } catch (IOException e) { Console.WriteLine("jhrs.com提示:{0}", e.ToString()); } //或者透過複製檔案方式 File.Copy(src, dest, true); File.Delete(src);
有了上面的知識,我們可以類推得出,同樣的我們可以使用FileSystem提供的方法對檔案進行重新命名了。
//這個就是重新命名檔案的方法,https://jhrs.com(江湖人士,國外網賺)讓你回答,是不是很簡單呢? FileSystem.RenameFile(oldFile, newFile);
C#移動檔案
檔案操作常見功能就是移動檔案,微軟官網文件也給了示例文件,這是官網連結:
https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/file-system/how-to-copy-delete-and-move-files-and-folders
其它的程式碼這裡就暫不舉例了。直接上答案吧。
//這個就是移動檔案的方法,https://jhrs.com(江湖人士,國外網賺)讓你回答,是不是很簡單呢? FileSystem.MoveFile(sourceFileName,destinationFileName)
C#移動目錄
當你透過程式碼移動目錄時,如果被移動的目錄檔案非常的大,再透過遞迴遍歷/迴圈遍歷目錄裡面的檔案進行移動是非常低效的做法。FileSystem提供了現成的方法,你可以呼叫它來移動目錄,經測試效率非常高。
//這個就是移動目錄的方法,https://jhrs.com(江湖人士,國外網賺)讓你回答,是不是很簡單呢? FileSystem.MoveDirectory(sourceDirectoryName, destinationDirectoryName)
最後說一下,你也可以呼叫 FileSystem.DeleteDirectory 方法刪除目錄,其它的方法,自己在VS裡面看一下提示吧,基本上從命名我們就知道它實現的是什麼功能。需要注意的是,被刪除的檔案或者目錄如果有隻讀屬性需要給它去掉。
/// <summary> /// 遞迴去除檔案,jhrs.com 首發,目錄的只讀屬性 /// </summary> /// <param name="dir"></param> private void RemoveDirReadOnley(DirectoryInfo dir) { dir.Attributes &= ~FileAttributes.ReadOnly; var files = dir.GetFiles(); Parallel.ForEach(files, (f) => { f.Attributes &= ~FileAttributes.ReadOnly; }); var dires = dir.GetDirectories(); Parallel.ForEach(dires, (f) => { f.Attributes &= ~FileAttributes.ReadOnly; files = f.GetFiles(); Parallel.ForEach(files, (m) => { m.Attributes &= ~FileAttributes.ReadOnly; }); RemoveDirReadOnley(f); }); }
結論
C# 中的細節還是有點多,使用C#進行檔案操作是很常見的功能,當有大量的檔案,目錄需要移動,重新命名,複製時,需要考慮一下效率的問題;FileSystem這個類提供的靜態方法基本上涵蓋了檔案的增、刪、改、移的操作,我們再也不需要去寫一些繁雜的程式碼來進行檔案操作了,直接用最簡單的方法吧。