C# 對文件與文件夾的操作包括刪除、移動與複製

来源:http://www.cnblogs.com/zpx1986/archive/2016/06/14/5584619.html
-Advertisement-
Play Games

在.Net中,對文件(File)和文件夾(Folder)的操作可以使用File類和Directory類,也可以使用FileInfo類和DirectoryInfo類,本文將詳細介紹,需要的朋友可以參考。 在.Net中,對文件(File)和文件夾(Folder)的操作可以使用File類和Director... ...


在.Net中,對文件(File)和文件夾(Folder)的操作可以使用File類和Directory類,也可以使用FileInfo類和DirectoryInfo類,本文將詳細介紹,需要的朋友可以參考。

在.Net中,對文件(File)和文件夾(Folder)的操作可以使用File類和Directory類,也可以使用FileInfo類和DirectoryInfo類。文件夾(Folder)是只在Windows操作系統中使用的名詞。在操作系統的理論中,人們更習慣於使用目錄(Directory)這個名詞。或許微軟為了有朝一日將.Net移植到其他的操作系統中(實際上也有很多人也在做著這個項目),所以還是以Directory來命名操作文件夾的類。
File類和Directory類都是靜態類。使用它們的好處是不需要初始化對象。如果你對某一個文件或文件夾只進行一次操作,那你最好使用該靜態類的靜態方法,比如File.Move,File.Delete等等。如果你需要對一個文件或文件夾進行多次操作,那最好還是使用FileInfo和DirectoryInfo類。因為File類和Directory是靜態類,所以你每次對一個文件或文件夾進行操作之前,它們都需要對該文件或文件夾進行一些檢查,比如authentication。如果使用FileInfo類和DirectoryInfo類,只在初始化類的對象時進行相關的檢查工作,也就是說只需要做一次,所以如果你需要對某個文件或文件夾進行多次操作,那最好使用FileInfo類和DirectoryInfo類。
下麵的這段代碼演示瞭如何獲得文件夾的信息,包括獲得文件夾下的子文件夾,以及文件夾下的文件。這裡使用了DirectoryInfo 類來完成,當然你也可以使用Directory靜態類。

代碼如下:

      void DisplayFolder() {
         string folderFullName = @"c:\temp";
         DirectoryInfo theFolder = new DirectoryInfo(folderFullName);
         if (!theFolder.Exists)
            throw new DirectoryNotFoundException("Folder not found: " + folderFullName);
         // list all subfolders in folder 
         Console.WriteLine("Subfolders:");
         foreach (DirectoryInfo subFolder in theFolder.GetDirectories()) {
            Console.WriteLine(subFolder.Name);
         }
         // list all files in folder 
         Console.WriteLine();
         Console.WriteLine("Files:");
         foreach (FileInfo file in theFolder.GetFiles()) {
            Console.WriteLine(file.Name);
         }
      }

下麵演示瞭如何使用FileInfo類來獲得文件的相關信息,包括文件的創建日期,文件的大小等等。當然你同樣也可以使用File靜態類來完成。

代碼如下:

      void DisplayFileInfo() {
         string folderFullName = @"c:\temp";
         string fileName = "New Text Document.txt";
         string fileFullName = Path.Combine(folderFullName, fileName);
         FileInfo theFile = new FileInfo(fileFullName);
         if (!theFile.Exists)
            throw new FileNotFoundException("File not found: " + fileFullName);
         Console.WriteLine(string.Format("Creation time: {0}", theFile.CreationTime.ToString()));
         Console.WriteLine(string.Format("Size: {0} bytes", theFile.Length.ToString()));
      }

下麵的代碼分別使用了File類和FileInfo類來演示如何刪除文件。

代碼如下:

      void DeleteFile1() {
         string fileToBeDeleted = @"c:\temp\New Text~ Document (3).txt";
         if (File.Exists(fileToBeDeleted)) {
            File.Delete(fileToBeDeleted);
         }
      }
      void DeleteFile2() {
         string fileToBeDeleted = @"c:\temp\New Text~ Document (3).txt";
         FileInfo file = new FileInfo(fileToBeDeleted);
         if (file.Exists) {
            file.Delete();
         }
      }

下麵的代碼分別使用了Directory類和DirectoryInfo類來演示如何刪除文件夾。

代碼如下:

      void DeleteFolder1() {
         string folderToBeDeleted = @"c:\temp\test";
         if (Directory.Exists(folderToBeDeleted)) {
            // true is recursive delete: 
            Directory.Delete(folderToBeDeleted, true);
         }
      }
      void DeleteFolder2() {
         string folderToBeDeleted = @"c:\temp\test";
         DirectoryInfo folder = new DirectoryInfo(folderToBeDeleted);
         if (folder.Exists) {
            folder.Delete(true);
         }
      }

下麵的代碼分別使用了File類和FileInfo類來演示如何移動文件。

代碼如下:

      void MoveFile1() {
         string fileToMove = @"c:\temp\New Text Document.txt";
         string fileNewDestination = @"c:\temp\test.txt";
         if (File.Exists(fileToMove) && !File.Exists(fileNewDestination)) {
            File.Move(fileToMove, fileNewDestination);
         }
      }
      void MoveFile2() {
         string fileToMove = @"c:\temp\New Text Document.txt";
         string fileNewDestination = @"c:\temp\test.txt";
         FileInfo file = new FileInfo(fileToMove);
         if (file.Exists) {
            file.MoveTo(fileNewDestination);
         }
      }

下麵的代碼分別使用了Directory類和DirectoryInfo類來演示如何移動文件夾。

代碼如下:

      void MoveFolder1() {
         string folderToMove = @"c:\temp\test";
         string folderNewDestination = @"c:\temp\test2";
         if (Directory.Exists(folderToMove)) {
            Directory.Move(folderToMove, folderNewDestination);
         }
      }
      void MoveFolder2() {
         string folderToMove = @"c:\temp\test";
         string folderNewDestination = @"c:\temp\test2";
         DirectoryInfo folder = new DirectoryInfo(folderToMove);
         if (folder.Exists) {
            folder.MoveTo(folderNewDestination);
         }
      }

下麵的代碼分別使用了File類和FileInfo類來演示如何複製文件。

代碼如下:

      void CopyFile1() {
         string sourceFile = @"c:\temp\New Text Document.txt";
         string destinationFile = @"c:\temp\test.txt";
         if (File.Exists(sourceFile)) {
            // true is overwrite 
            File.Copy(sourceFile, destinationFile, true);
         }
      }
      void CopyFile2() {
         string sourceFile = @"c:\temp\New Text Document.txt";
         string destinationFile = @"c:\temp\test.txt";
         FileInfo file = new FileInfo(sourceFile);
         if (file.Exists) {
            // true is overwrite 
            file.CopyTo(destinationFile, true);
         }
      }

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • C#複習① 2016年6月15日 08:19 Main Introduction of C# 簡單介紹C# 1. C# is very similar to Java (70% Java, 10% C++, 5% Visual Basic, 15% new) C#與Java好比失散多年的姐妹,長得像 ...
  • 剛開始學習C#的時候,就聽說CLR對於String類有一種特別的記憶體管理機制:有時候,明明聲明瞭兩個String類的對象,但是他們偏偏卻指向同一個實例。如下: String s1 = "Hello";String s2 = "Hello"; //s2和s1的實際值都是“Hello”bool same ...
  • 說明: 說明一點JS是直接支持Json的 所以可以直接如下寫: var a={"Age":28,"LastLoginTime":"2011-01-09 01:00:56","Name":"張三"}; 直接是json對象 而不必 寫成: var a=’{"Age":28,"LastLoginTime" ...
  • 分類:C#、VS2015 創建日期:2016-06-15 教材:(十二五國家級規劃教材)《C#程式設計及應用教程》(第3版) 一、本章要點 C#數據類型分兩大類:值類型、引用類型。 值類型:棧(Stack)中保存的就是數據的值。 引用類型:棧中保存的是堆(Heap)中對象的引用地址。 棧(Stack... ...
  • 五月中旬 .NET Core RC2 如期發佈,我們遂決定翻譯 ASP.NET Core 文檔。我們在何鎮汐先生、悲夢先生、張仁建先生和雷歐納德先生的群中發佈了翻譯計劃招募信息,並召集到一群小伙伴。我們從六月開始翻譯文檔,目前已完成前兩章,並將按計劃以連載的方式逐篇公佈。當翻譯計劃完成後,所有文檔將... ...
  • 今天來簡單聊聊Suggestion產品 什麼是Suggestion服務? 一圖勝千言: 當你想要搜索某個長詞語或者一句話輸入部分時,Suggestion服務預測你極大可能的候選項,並羅列出來,供你選擇。 產品的意義: 1. 降低用戶搜索的輸入成本,用戶總是懶惰的,誰能讓用戶最懶惰還能幫他把事辦好,這 ...
  • 轉載別人的轉載,原作者都不知道了 在項目中經常用到DataTable,如果DataTable使用得當,不僅能使程式簡潔實用,而且能夠提高性能,達到事半功倍的效果,現對DataTable的使用技巧進行一下總結。 一、DataTable簡介 (1)構造函數 DataTable() 不帶參數初始化Data ...
  • 之所以寫這個,是因為本來想寫一個Youtube刷評論的工具,把登錄做出來了,後面就沒繼續做下去。 涉及到基本的HttpWatch的應用以及Fiddler的應用(Fd主要用來排查問題,通過對比 瀏覽器和vs代碼 找出問題所在!以瀏覽器為標準)。 通過HttpWatch抓包分析,我把登錄Youtube一 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...