C#中對文件File常用操作方法的工具類

来源:https://www.cnblogs.com/badaoliumangqizhi/archive/2019/11/07/11813071.html

場景 C#中File類的常用讀取與寫入文件方法的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99693983 註: 博客主頁:https://blog.csdn.net/badao_liumang_qizhi關註公眾號霸 ...


場景

C#中File類的常用讀取與寫入文件方法的使用:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99693983

註:

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關註公眾號
霸道的程式猿
獲取編程相關電子書、教程推送與免費下載。

實現

獲取文件的擴展名

        /// <summary>
        /// 獲取文件的擴展名
        /// </summary>
        /// <param name="filename">完整文件名</param>
        /// <returns>返回擴展名</returns>
  public static string GetPostfixStr(string filename)
  {
   int num = filename.LastIndexOf(".");
   int length = filename.Length;
   return filename.Substring(num, length - num);
  }

 

讀取文件內容

  

      /// <summary>
        /// 讀取文件內容
        /// </summary>
        /// <param name="path">要讀取的文件路徑</param>
        /// <returns>返迴文件內容</returns>
  public static string ReadFile(string path)
  {
   string result;
   if (!System.IO.File.Exists(path))
   {
    result = "不存在相應的目錄";
   }
   else
   {
    System.IO.FileStream stream = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite);
    System.IO.StreamReader streamReader = new System.IO.StreamReader(stream, System.Text.Encoding.Default);
    result = streamReader.ReadToEnd();
    streamReader.Close();
    streamReader.Dispose();
   }
   return result;
  }

 

指定編碼格式讀取文件內容

   

     /// <summary>
        /// 讀取文件內容
        /// </summary>
        /// <param name="path">要讀取的文件路徑</param>
        /// <param name="encoding">編碼格式</param>
        /// <returns>返迴文件內容</returns>
        public static string ReadFile(string path, System.Text.Encoding encoding)
        {
            string result;
            if (!System.IO.File.Exists(path))
            {
                result = "不存在相應的目錄";
            }
            else
            {
                System.IO.FileStream stream = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite);
                System.IO.StreamReader streamReader = new System.IO.StreamReader(stream, encoding);
                result = streamReader.ReadToEnd();
                streamReader.Close();
                streamReader.Dispose();
            }
            return result;
        }

 

向指定文件寫入內容

  

      /// <summary>
        /// 向指定文件寫入內容
        /// </summary>
        /// <param name="path">要寫入內容的文件完整路徑</param>
        /// <param name="content">要寫入的內容</param>
  public static void WriteFile(string path, string content)
  {
   try
   {
    object obj = new object();
    if (!System.IO.File.Exists(path))
    {
     System.IO.FileStream fileStream = System.IO.File.Create(path);
     fileStream.Close();
    }
    lock (obj)
    {
     using (System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(path, false, System.Text.Encoding.Default))
     {
      streamWriter.WriteLine(content);
      streamWriter.Close();
      streamWriter.Dispose();
     }
    }
   }
   catch (System.Exception ex)
   {
                ICSharpCode.Core.LoggingService<FileHelper>.Error(String.Format("寫入文件{0}異常:{1}", path, ex.Message), ex);
   }
  }

 

指定編碼格式向文件寫入內容

 

       /// <summary>
        /// 向指定文件寫入內容
        /// </summary>
        /// <param name="path">要寫入內容的文件完整路徑</param>
        /// <param name="content">要寫入的內容</param>
        /// <param name="encoding">編碼格式</param>
        public static void WriteFile(string path, string content, System.Text.Encoding encoding)
        {
            try
            {
                object obj = new object();
                if (!System.IO.File.Exists(path))
                {
                    System.IO.FileStream fileStream = System.IO.File.Create(path);
                    fileStream.Close();
                }
                lock (obj)
                {
                    using (System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(path, false, encoding))
                    {
                        streamWriter.WriteLine(content);
                        streamWriter.Close();
                        streamWriter.Dispose();
                    }
                }
            }
            catch (System.Exception ex)
            {
                ICSharpCode.Core.LoggingService<FileHelper>.Error(String.Format("寫入文件{0}異常:{1}", path, ex.Message), ex);
            }
        }

 

 

文件複製

        /// <summary>
        /// 文件複製
        /// </summary>
        /// <param name="orignFile">源文件完整路徑</param>
        /// <param name="newFile">目標文件完整路徑</param>
  public static void FileCoppy(string orignFile, string newFile)
  {
   System.IO.File.Copy(orignFile, newFile, true);
  }

 

文件刪除

 

       /// <summary>
        /// 刪除文件
        /// </summary>
        /// <param name="path">要刪除的文件的完整路徑</param>
  public static void FileDel(string path)
  {
   System.IO.File.Delete(path);
  }

 

文件移動

 

       /// <summary>
        /// 文件移動(剪貼->粘貼)
        /// </summary>
        /// <param name="orignFile">源文件的完整路徑</param>
        /// <param name="newFile">目標文件完整路徑</param>
  public static void FileMove(string orignFile, string newFile)
  {
   System.IO.File.Move(orignFile, newFile);
  }

 

判斷一組文件是否都存在

   

     /// <summary>
        /// 判斷一組文件是否都存在
        /// </summary>
        /// <param name="filePathList">文件路徑List</param>
        /// <returns>文件是否全部存在</returns>
        public static bool IsFilesExist(List<string> filePathList)
        {
            bool isAllExist = true;
            foreach(string filePath in filePathList)
            {
                if(!File.Exists(filePath))
                {
                    isAllExist = false;
                }
            }
            return isAllExist;
        }

 

創建目錄

 

       /// <summary>
        /// 創建目錄
        /// </summary>
        /// <param name="orignFolder">當前目錄</param>
        /// <param name="newFloder">要創建的目錄名</param>
  public static void FolderCreate(string orignFolder, string newFloder)
  {
   System.IO.Directory.SetCurrentDirectory(orignFolder);
   System.IO.Directory.CreateDirectory(newFloder);
  }

 

刪除目錄

   

     /// <summary>
        /// 刪除目錄
        /// </summary>
        /// <param name="dir">要刪除的目錄</param>
  public static void DeleteFolder(string dir)
  {
   if (System.IO.Directory.Exists(dir))
   {
    string[] fileSystemEntries = System.IO.Directory.GetFileSystemEntries(dir);
    for (int i = 0; i < fileSystemEntries.Length; i++)
    {
     string text = fileSystemEntries[i];
     if (System.IO.File.Exists(text))
     {
      System.IO.File.Delete(text);
     }
     else
     {
      FileHelper.DeleteFolder(text);
     }
    }
    System.IO.Directory.Delete(dir);
   }
  }

 

目錄內容複製

   

     /// <summary>
        /// 目錄內容複製
        /// </summary>
        /// <param name="srcPath">源目錄</param>
        /// <param name="aimPath">目標目錄</param>
  public static void CopyDir(string srcPath, string aimPath)
  {
   try
   {
    if (aimPath[aimPath.Length - 1] != System.IO.Path.DirectorySeparatorChar)
    {
     aimPath += System.IO.Path.DirectorySeparatorChar;
    }
    if (!System.IO.Directory.Exists(aimPath))
    {
     System.IO.Directory.CreateDirectory(aimPath);
    }
    string[] fileSystemEntries = System.IO.Directory.GetFileSystemEntries(srcPath);
    string[] array = fileSystemEntries;
    for (int i = 0; i < array.Length; i++)
    {
     string text = array[i];
     if (System.IO.Directory.Exists(text))
     {
      FileHelper.CopyDir(text, aimPath + System.IO.Path.GetFileName(text));
     }
     else
     {
      System.IO.File.Copy(text, aimPath + System.IO.Path.GetFileName(text), true);
     }
    }
   }
   catch (System.Exception ex)
   {
    throw new System.Exception(ex.ToString());
   }
  }

 


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

更多相關文章
  • 一個基於Net Core3.0的WPF框架Hello World實例 [toc] 1.創建WPF解決方案 1.1 創建Net Core版本的WPF工程 1.2 指定項目名稱,路徑,解決方案名稱 2. 依賴庫和4個程式文件介紹 2.1 框架依賴庫 依賴Microsoft.NETCore.App跟Mic ...
  • 什麼是基於角色的授權? 當涉及ASP.NET Core授權時,我們有兩種選擇,基於角色和基於策略(也有基於聲明的,但那隻是基於策略的一種特殊類型)。 基於角色的授權最初是在ASP.NET(ASP.NET Core之前)中引入,這是一種限制對資源訪問的聲明性方法。 開發人員可以指定用戶... ...
  • 前言 在之前鼓搗過一次基礎工程 April.WebApi 後,就考慮把常用的類庫打包做成一個公共類庫,這樣既方便維護也方便後續做快速開發使用,倉庫地址: "April.Util_github" , "April.Util_gitee" ,後續會繼續推出基於Util的基礎工程(包含許可權相關)以及如果代 ...
  • 出處:http://www.hzhcontrols.com/原文:http://www.hzhcontrols.com/blog-149.html本文版權歸www.hzhcontrols.com所有歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利 ...
  • string類型在我們實際項目開發中是一個最使用的類型,sting是一個引用類型,但是在實際使用中又有其特殊性所在,他是一個是:密封類、只讀類。在使用過程需要註意:避免不必要的記憶體開銷、避免不必要的裝箱操作。 ...
一周排行
  • static void Main(string[] args) { string url = "https://go.microsoft.com/fwlink/?linkid=2108895&amp;clcid=0x409"; DownloadBigFile(new Uri(url), "ssms.... ...
  • 1. 使用ASP.NET Core 3.x 構建 RESTful API - 1.準備工作 什麼是REST 什麼是REST REST一詞最早是在2000年,由Roy Fielding在他的博士論文《Architectural Styles and the Design of Network-base ...
  • wpf 兩個自定義控制項 一個是IP控制項,一個滑動條。先看下效果圖 IPControl 1、實際工作中有時需要設置IP信息,就想著做一個ip控制項。效果沒有window自帶的好,需要通過tab切換。但也能滿足使用。廢話不多說直接上代碼 IPControl.xaml IPControl.xaml.cs 2 ...
  • 近期和幾位做嵌入式開發的朋友閑聊過程中,一位朋友抱怨到:這C#太難用了,我想在N個窗體(或者是N個用戶組件之間)傳遞值都搞不定,非得要定義一個全局變數來存儲,然後用定時器來刷新值,太Low了。我急切的回答道:這很簡單,不就是委托的事嘛。那你來一個示例啊:朋友道。此為這篇博客的起因,所以此篇博客對於有 ...
  • 在面對對象編程中,類的三大特性分別為封裝,繼承,多態。其中多態的具體實現,依賴於三個方法,也就是虛方法,抽象類和介面。 多態的具體作用是什麼呢?或者說多態的存在有什麼意義呢?多態的存在有效的降低了程式的耦合度,在使用的時候,不僅可以表現大家都有的共性,還能在必要的時候突出一些特殊的的個性。 那麼如何 ...
  • [toc] 前言 在之前已經提到過,公用類庫Util已經開源,目的一是為了簡化開發的工作量,畢竟有些常規的功能類庫重覆率還是挺高的,二是為了一起探討學習軟體開發,用的人越多問題也就會越多,解決的問題越多功能也就越完善, 倉庫地址: "April.Util_github" , "April.Util_ ...
  • 【ASP.NET Core學習】在ASP.NET Core 種使用Entity Framework Core介紹,包括如何添加Entity Framwork Core,創建模型和遷移到資料庫,查詢數據,保存數據,使用事務,處理併發衝突 ...
  • 環境:MacOS 10.13 MAMAP Prophp 7.0.33 + xdebugVisual Studio Code前言我所理解的 POP Chain:利用魔術方法並巧妙構造特殊屬性調用一系列函數或類方法以執行某種敏感操作的調用堆棧反序列化常用魔法函數前言我所理解的 POP Chain:利用魔 ...
  • 當創建隊列jobs、監聽器或訂閱伺服器以推送到隊列中時,您可能會開始認為,一旦分派,隊列工作器決定如何處理您的邏輯就完全由您自己決定了。 嗯……並不是說你不能從作業內部與隊列工作器交互,但是通常情況下,哪怕你做了,也是沒必要的。 這個神奇的騷操作的出現是因為“InteractsWithQueue”這 ...
  • 在說正題之前先解釋一下交換機模式是個籠統的稱呼,它不是一個單獨的模式(包括了訂閱模式,路由模式和主題模式),交換機模式是一個比較常用的模式,主要是為了實現數據的同步。 首先,說一下訂閱模式,就和字面上的意思差不多主要就是一個生產者,多個消費者,同一個消息被多個消費者獲取,先看一下官網的圖示 整體執行 ...
x