C#經常使用操做類庫四(File操做類)

public class FileHelper : IDisposable

    {



        private bool _alreadyDispose = false;



        #region 構造函數

        public FileHelper()

        {

            //

            // TODO: 在此處添加構造函數邏輯

            //

        }

        ~FileHelper()

        {

            Dispose(); ;

        }



        protected virtual void Dispose(bool isDisposing)

        {

            if (_alreadyDispose) return;

            _alreadyDispose = true;

        }

        #endregion



        #region IDisposable 成員



        public void Dispose()

        {

            Dispose(true);

            GC.SuppressFinalize(this);

        }



        #endregion



        #region 取得文件後綴名

        /****************************************

          * 函數名稱:GetPostfixStr

          * 功能說明:取得文件後綴名

          * 參     數:filename:文件名稱

          * 調用示列:

          *            string filename = "aaa.aspx";        

          *            string s = EC.FileObj.GetPostfixStr(filename);         

         *****************************************/

        /// <summary>

        /// 取後綴名

        /// </summary>

        /// <param name="filename">文件名</param>

        /// <returns>.gif|.html格式</returns>

        public static string GetPostfixStr(string filename)

        {

            int start = filename.LastIndexOf(".");

            int length = filename.Length;

            string postfix = filename.Substring(start, length - start);

            return postfix;

        }

        #endregion



        #region 寫文件

        /****************************************

          * 函數名稱:WriteFile

          * 功能說明:寫文件,會覆蓋掉之前的內容

          * 參     數:Path:文件路徑,Strings:文本內容

          * 調用示列:

          *            string Path = Server.MapPath("Default2.aspx");       

          *            string Strings = "這是我寫的內容啊";

          *            EC.FileObj.WriteFile(Path,Strings);

         *****************************************/

        /// <summary>

        /// 寫文件

        /// </summary>

        /// <param name="Path">文件路徑</param>

        /// <param name="Strings">文件內容</param>

        public static void WriteFile(string Path, string Strings)

        {

            if (!System.IO.File.Exists(Path))

            {

                System.IO.FileStream f = System.IO.File.Create(Path);

                f.Close();

            }

            System.IO.StreamWriter f2 = new System.IO.StreamWriter(Path, false, System.Text.Encoding.GetEncoding("gb2312"));

            f2.Write(Strings);

            f2.Close();

            f2.Dispose();

        }



        /// <summary>

        /// 寫文件

        /// </summary>

        /// <param name="Path">文件路徑</param>

        /// <param name="Strings">文件內容</param>

        /// <param name="encode">編碼格式</param>

        public static void WriteFile(string Path, string Strings, Encoding encode)

        {

            if (!System.IO.File.Exists(Path))

            {

                System.IO.FileStream f = System.IO.File.Create(Path);

                f.Close();

            }

            System.IO.StreamWriter f2 = new System.IO.StreamWriter(Path, false, encode);

            f2.Write(Strings);

            f2.Close();

            f2.Dispose();

        }

        #endregion



        #region 讀文件

        /****************************************

          * 函數名稱:ReadFile

          * 功能說明:讀取文本內容

          * 參     數:Path:文件路徑

          * 調用示列:

          *            string Path = Server.MapPath("Default2.aspx");       

          *            string s = EC.FileObj.ReadFile(Path);

         *****************************************/

        /// <summary>

        /// 讀文件

        /// </summary>

        /// <param name="Path">文件路徑</param>

        /// <returns></returns>

        public static string ReadFile(string Path)

        {

            string s = "";

            if (!System.IO.File.Exists(Path))

                s = "不存在相應的目錄";

            else

            {

                StreamReader f2 = new StreamReader(Path, System.Text.Encoding.GetEncoding("gb2312"));

                s = f2.ReadToEnd();

                f2.Close();

                f2.Dispose();

            }



            return s;

        }



        /// <summary>

        /// 讀文件

        /// </summary>

        /// <param name="Path">文件路徑</param>

        /// <param name="encode">編碼格式</param>

        /// <returns></returns>

        public static string ReadFile(string Path, Encoding encode)

        {

            string s = "";

            if (!System.IO.File.Exists(Path))

                s = "不存在相應的目錄";

            else

            {

                StreamReader f2 = new StreamReader(Path, encode);

                s = f2.ReadToEnd();

                f2.Close();

                f2.Dispose();

            }



            return s;

        }

        #endregion



        #region 追加文件

        /****************************************

          * 函數名稱:FileAdd

          * 功能說明:追加文件內容

          * 參     數:Path:文件路徑,strings:內容

          * 調用示列:

          *            string Path = Server.MapPath("Default2.aspx");     

          *            string Strings = "新追加內容";

          *            EC.FileObj.FileAdd(Path, Strings);

         *****************************************/

        /// <summary>

        /// 追加文件

        /// </summary>

        /// <param name="Path">文件路徑</param>

        /// <param name="strings">內容</param>

        public static void FileAdd(string Path, string strings)

        {

            StreamWriter sw = File.AppendText(Path);

            sw.Write(strings);

            sw.Flush();

            sw.Close();

        }

        #endregion



        #region 拷貝文件

        /****************************************

          * 函數名稱:FileCoppy

          * 功能說明:拷貝文件

          * 參     數:OrignFile:原始文件,NewFile:新文件路徑

          * 調用示列:

          *            string orignFile = Server.MapPath("Default2.aspx");     

          *            string NewFile = Server.MapPath("Default3.aspx");

          *            EC.FileObj.FileCoppy(OrignFile, NewFile);

         *****************************************/

        /// <summary>

        /// 拷貝文件

        /// </summary>

        /// <param name="OrignFile">原始文件</param>

        /// <param name="NewFile">新文件路徑</param>

        public static void FileCoppy(string orignFile, string NewFile)

        {

            File.Copy(orignFile, NewFile, true);

        }



        #endregion



        #region 刪除文件

        /****************************************

          * 函數名稱:FileDel

          * 功能說明:刪除文件

          * 參     數:Path:文件路徑

          * 調用示列:

          *            string Path = Server.MapPath("Default3.aspx");    

          *            EC.FileObj.FileDel(Path);

         *****************************************/

        /// <summary>

        /// 刪除文件

        /// </summary>

        /// <param name="Path">路徑</param>

        public static void FileDel(string Path)

        {

            File.Delete(Path);

        }

        #endregion



        #region 移動文件

        /****************************************

          * 函數名稱:FileMove

          * 功能說明:移動文件

          * 參     數:OrignFile:原始路徑,NewFile:新文件路徑

          * 調用示列:

          *             string orignFile = Server.MapPath("../說明.txt");    

          *             string NewFile = Server.MapPath("http://www.cnblogs.com/說明.txt");

          *             EC.FileObj.FileMove(OrignFile, NewFile);

         *****************************************/

        /// <summary>

        /// 移動文件

        /// </summary>

        /// <param name="OrignFile">原始路徑</param>

        /// <param name="NewFile">新路徑</param>

        public static void FileMove(string orignFile, string NewFile)

        {

            File.Move(orignFile, NewFile);

        }

        #endregion



        #region 在當前目錄下建立目錄

        /****************************************

          * 函數名稱:FolderCreate

          * 功能說明:在當前目錄下建立目錄

          * 參     數:OrignFolder:當前目錄,NewFloder:新目錄

          * 調用示列:

          *            string orignFolder = Server.MapPath("test/");    

          *            string NewFloder = "new";

          *            EC.FileObj.FolderCreate(OrignFolder, NewFloder);

         *****************************************/

        /// <summary>

        /// 在當前目錄下建立目錄

        /// </summary>

        /// <param name="OrignFolder">當前目錄</param>

        /// <param name="NewFloder">新目錄</param>

        public static void FolderCreate(string orignFolder, string NewFloder)

        {

            Directory.SetCurrentDirectory(orignFolder);

            Directory.CreateDirectory(NewFloder);

        }

        #endregion



        #region 遞歸刪除文件夾目錄及文件

        /****************************************

          * 函數名稱:DeleteFolder

          * 功能說明:遞歸刪除文件夾目錄及文件

          * 參     數:dir:文件夾路徑

          * 調用示列:

          *            string dir = Server.MapPath("test/");  

          *            EC.FileObj.DeleteFolder(dir);       

         *****************************************/

        /// <summary>

        /// 遞歸刪除文件夾目錄及文件

        /// </summary>

        /// <param name="dir"></param>

        /// <returns></returns>

        public static void DeleteFolder(string dir)

        {

            if (Directory.Exists(dir)) //若是存在這個文件夾刪除之

            {

                foreach (string d in Directory.GetFileSystemEntries(dir))

                {

                    if (File.Exists(d))

                        File.Delete(d); //直接刪除其中的文件

                    else

                        DeleteFolder(d); //遞歸刪除子文件夾

                }

                Directory.Delete(dir); //刪除已空文件夾

            }



        }

        #endregion



        #region 將指定文件夾下面的全部內容copy到目標文件夾下面 果目標文件夾爲只讀屬性就會報錯。

        /****************************************

          * 函數名稱:CopyDir

          * 功能說明:將指定文件夾下面的全部內容copy到目標文件夾下面 果目標文件夾爲只讀屬性就會報錯。

          * 參     數:srcPath:原始路徑,aimPath:目標文件夾

          * 調用示列:

          *            string srcPath = Server.MapPath("test/");  

          *            string aimPath = Server.MapPath("test1/");

          *            EC.FileObj.CopyDir(srcPath,aimPath);   

         *****************************************/

        /// <summary>

        /// 指定文件夾下面的全部內容copy到目標文件夾下面

        /// </summary>

        /// <param name="srcPath">原始路徑</param>

        /// <param name="aimPath">目標文件夾</param>

        public static void CopyDir(string srcPath, string aimPath)

        {

            try

            {

                // 檢查目標目錄是否以目錄分割字符結束若是不是則添加之

                if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)

                    aimPath += Path.DirectorySeparatorChar;

                // 判斷目標目錄是否存在若是不存在則新建之

                if (!Directory.Exists(aimPath))

                    Directory.CreateDirectory(aimPath);

                // 獲得源目錄的文件列表,該裏面是包含文件以及目錄路徑的一個數組

                //若是你指向copy目標文件下面的文件而不包含目錄請使用下面的方法

                //string[] fileList = Directory.GetFiles(srcPath);

                string[] fileList = Directory.GetFileSystemEntries(srcPath);

                //遍歷全部的文件和目錄

                foreach (string file in fileList)

                {

                    //先看成目錄處理若是存在這個目錄就遞歸Copy該目錄下面的文件



                    if (Directory.Exists(file))

                        CopyDir(file, aimPath + Path.GetFileName(file));

                    //不然直接Copy文件

                    else

                        File.Copy(file, aimPath + Path.GetFileName(file), true);

                }



            }

            catch (Exception ee)

            {

                throw new Exception(ee.ToString());

            }

        }

        #endregion

    }
相關文章
相關標籤/搜索