• 文件的操作


    Code:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    
    namespace SubjectData
    {
        public class FileOperator
        {
            /// <summary>
            /// 
            /// </summary>
            /// <param name="path">文件路径</param>
            /// <param name="encoding">编码</param>
            /// <returns>文件内容</returns>
            public string ReadFile(string path, System.Text.Encoding encoding)
            {
                string tempContent = "";
                using (StreamReader sr = new StreamReader(path, encoding))
                {
                    tempContent = sr.ReadToEnd();
                }
                return tempContent;
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="path">文件的路径</param>
            /// <param name="append">是否追加</param>
            /// <param name="encoding">编码</param>
            /// <param name="content">内容</param>
            /// <returns>是否成功</returns>
            public bool WriteFile(string path,bool append,System.Text.Encoding encoding,string content)
            {
                bool state = false;
                try
                {
                    using (StreamWriter sw = new StreamWriter(path, append, encoding))
                    {
                        sw.Write(content);
                        sw.Flush();
                        state = true;
                    }
                }
                catch
                {
     
                }
                return state;
            }
            /// <summary>
            /// 拷贝一个路径下的文件夹和文件
            /// </summary>
            /// <param name="olddirectory"></param>
            /// <param name="newdirectory"></param>
            /// <returns></returns>
            public bool CopyDirectoryAndFiles(string olddirectory, string newdirectory)
            {
                bool state = false;
                try
                {
                    DirectoryInfo dis = new DirectoryInfo(newdirectory);
                    if (!dis.Exists)
                    {
                        Directory.CreateDirectory(newdirectory);
                    }
                    CopyAll(olddirectory, newdirectory, "");
                    state = true;
                }
                catch
                {
     
                }
                return state;
            }
            /// <summary>
            /// 递归拷贝一个文件夹的所有文件
            /// </summary>
            /// <param name="olddirectory"></param>
            /// <param name="newdirectory"></param>
            /// <param name="dir"></param>
            protected void CopyAll(string olddirectory, string newdirectory, string dir)
            {
                DirectoryInfo dis = new DirectoryInfo(dir.Length > 0 ? (dir) : (olddirectory));
                FileInfo[] files = dis.GetFiles();
    
                FileInfo f = null;
                foreach (FileInfo fi in files)
                {
                    try
                    {
                        //拷贝文件
                        File.Copy(fi.FullName, string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name));
                    }
                    catch
                    {
                        try
                        {
                            
                            string filename = string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name);
                            f = new FileInfo(filename);
    
                            if ((f.Attributes & System.IO.FileAttributes.ReadOnly) != 0)
                                f.Attributes -= FileAttributes.ReadOnly;
    
                            f.Delete();
    
                            File.Copy(fi.FullName, string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name));
                        }
                        catch
                        {
                        }
                    }
    
                }
                if (dis.GetDirectories().Length > 0)
                {
                    for (int i = 0; i < dis.GetDirectories().Length; i++)
                    {
                        //创建目录
                        string tempNewPath = string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), dis.GetDirectories()[i].Name);
                        if (!Directory.Exists(tempNewPath))
                            Directory.CreateDirectory(tempNewPath);
                        CopyAll(olddirectory, newdirectory, dis.GetDirectories()[i].FullName);
                    }
                }
    
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="oldFilePath"></param>
            /// <param name="newFilePath"></param>
            /// <returns></returns>
            public bool CopyFile(string oldFilePath, string newFilePath)
            {
                bool state = false;
                File.Copy(oldFilePath, newFilePath);
                return state;
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="directory"></param>
            /// <returns></returns>
            public bool DelteDirectory(string directory, string fileext)
            {
                bool state = false;
                DeleteDirectoryAndFiles(directory,fileext);
                return state;
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="path"></param>
            protected void DeleteDirectoryAndFiles(string path,string fileext)
            {
                DirectoryInfo di = new DirectoryInfo(path);
                if (di.GetFiles().Length > 0)
                    DeleteFiles(path, fileext);
              
               DirectoryInfo[] dis = di.GetDirectories();
               if (dis.Length > 0)
               {
                   foreach (DirectoryInfo tempdi in dis)
                   {
    
                       DeleteDirectoryAndFiles(tempdi.FullName, fileext);
                       if (tempdi.GetFiles().Length < 1 && tempdi.GetDirectories().Length < 1)
                           tempdi.Delete();
                   }
               }
            }
            /// <summary>
            /// 删除文件夹的所有文件
            /// </summary>
            /// <param name="path"></param>
            protected void DeleteFiles(string path,string sp)
            {
                DirectoryInfo di = new DirectoryInfo(path);
                FileInfo[] fis=null;
                if (string.IsNullOrEmpty(sp))
                    fis = di.GetFiles();
                else
                    fis = di.GetFiles(sp);
    
                foreach (FileInfo fi in fis)
                {
                    try
                    {
                        if ((fi.Attributes & FileAttributes.ReadOnly) != 0)
                            fi.Attributes -= FileAttributes.ReadOnly;
    
                        fi.Delete();
                    }
                    catch
                    {
                        continue;
                    }
                }
            }
        }
    }
    
    
  • 相关阅读:
    nginx 出现413 Request Entity Too Large问题的解决方法
    PHP中的插件机制原理和实例
    PHP扩展开发:第一个扩展
    阿拉伯语在网页中排版问题解决
    Piwik学习 -- 插件开发
    piwik高负载加速之切换session存储位置
    php 函数func_get_args()、func_get_arg()与func_num_args()之间的比较
    Docker: 基础介绍 [一]
    深入剖析Kubernetes学习笔记:开篇词(00)
    网络编程基础【林老师版】:简单的 套接字通信(一)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1706459.html
Copyright © 2020-2023  润新知