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());
   }
  }

 


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

更多相關文章
  • 今天,我的任務是,在 Laravel 應用程式用戶個人資料頁面上,用戶名旁邊添加一個綠點,表示他們是否線上。我首先想到的是,我們將需要啟動一個 node.js 伺服器並跟蹤每個用戶的活動套接字連接。然後用當前登錄的用戶套接字,我們可以實時更新線上狀態!唯一的問題是,這是我們目前的要求,有點超過頂部, ...
  • 參考以下博文,我這裡只是筆記一下,原文會更加詳細 c#基礎系列1 深入理解值類型和引用類型 堆棧和托管堆c# 值類型和引用類型 紅色表示——“這啥?”(真實1個問題引出3個問題) CLR支持的兩種類型 引用類型: 引用類型從托管堆上分配,new操作符會返回對象的指針——指向對象數據的記憶體位置的一個引 ...
  • 以前寫過ASP.NET Core 2.x的REST API文章,今年再更新一下到3.0版本。 先決條件 我在B站有一個非常入門的ASP.NET Core 3.0的視頻教程,如果您對ASP.NET Core不瞭解,就可以先看一下裡面的基礎知識和API相關的內容,地址是:https://www.bili ...
  • 如何在IIS中設置功能變數名稱: 1,想好我們想要配置的本地功能變數名稱,我們以www.baidu.com為例。 2,打開系統盤,一般預設的系統盤為C盤,打開:C:\Windows\System32\drivers\etc這路徑,找到文件“hosts”文件。 3,打開文件hosts文件,在最下方回車加入:電腦ip地 ...
  • 多年來,Javascript(及其子框架)已在瀏覽器中運行DOM(文檔對象模型),並且掌握了腳本知識才能真正操作客戶端UI。大約2年前,所有這些都隨著Web Assembly的引入而發生了變化-Web Assembly允許在客戶端解釋已編譯的語言(相對Web Assembly更多瞭解請閱讀瞭解was ...
  • 一處開發,多處同步編輯使用,並且發佈時各個項目均可獨立 一、直接編輯項目工程文件 具體實現為:編輯 文件,在 或 節點: : 屬性值為項目文件的相對引用路徑 : 節點中放置要引用到當前項目中的位置 1.無需編譯的靜態資源文件等,使用 標簽引入 引用當前工程內的文件 引用外部項目工程中的文件 2.需要 ...
  • 場景 通過文件選擇對話框選擇文件 複製文件到指定路徑 註: 博客主頁: https://blog.csdn.net/badao_liumang_qizhi 關註公眾號霸道的程式猿獲取編程相關電子書、教程推送與免費下載。 實現 打開選擇文件對話框 OpenFileDialog importOpenFi ...
  • [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)] internal static extern IntPtr GetFocus(); ///獲取 當前擁有焦點 ...
一周排行
  • 微信公眾號: "Dotnet9" ,網站: "Dotnet9" ,問題或建議: "請網站留言" , 如果對您有所幫助: "歡迎贊賞" 。 .NET CORE(C ) WPF 值得推薦的動畫菜單設計 閱讀導航 1. 本文背景 2. 代碼實現 3. 本文參考 4. 源碼 1. 本文背景 YouTube上 ...
  • 1. HttpRequest對象 伺服器接收到http協議的請求後,會根據報文創建HttpRequest對象,這個對象不需要我們創建,直接使用伺服器構造好的對象就可以。視圖的第一個參數必須是HttpRequest對象,在django.http模塊中定義了HttpRequest對象的API。 1.1 ...
  • SpringMVC 攔截器 Spring MVC也可以使用攔截器對請求進行攔截處理,可以自定義攔截器來實現特定的功能,自定義的攔截器可以實現HandlerInterceptor介面中的三個方法,也可以繼承HandlerInterceptorAdapter 適配器類按照需要那個方法,就實現哪個方法 過 ...
  • 1. JDBC介紹 JDBC(Java DataBase Connectivity),即Java資料庫的連接。JDBC是一種用於執行SQL語句(DML,DDL,DQL)的Java API,可以為多種關係資料庫(oracle,mysql,sqlserver)提供統一訪問,它由一組用Java語言編寫的類 ...
  • [toc] 一、入門 1、Spring Boot簡介 簡化Spring應用開發的一個框架 整個Spring技術棧的整合 J2EE開發的一站式解決方案 2、微服務 Martin Fowler 微服務是一種架構風格 一個應用應該是一組小型服務:可以通過HTTP的方式進行互通 每一個功能元素最終都是一個可 ...
  • 首先如果直接使用 root 用戶來啟動 tomcat 的話,是可以正常啟動的。 但是我們在 Linux 中使用普通用戶啟動 tomcat 報瞭如下錯誤 原因是沒有在 setclasspath.sh 上設置 JAVA_HOME 和 JRE_HOME。 解決辦法: 打開 setclasspath.sh ...
  • 線上實時轉換 需要 .babelrc中: 項目中main.js配置: 前提是安裝對應的包 自己寫的要運行的為app.js,這樣配置後會在運行main.js是自動轉為es5並執行 通過配置手動轉換 需要 安裝babel後 運行 src為自己寫的es6目錄文件,dist為轉碼後的es5文件,沒有則創建 ...
  • 假如有兩個文件:app.js和config.js app.js為主文件要去引用config這個模塊 以前學習node時使用的模塊導出: es6中的模塊導出 方法一 兩種可以混合使用 方法二 通過 export 導出的成員必須通過解構賦值按需載入 或者通過 的形式載入所有通過 export 關鍵字導出 ...
  • 不做解釋,代碼一看就懂 app.js config.js ...
  • 對babel進行複習
x