zoukankan      html  css  js  c++  java
  • 文件操作类

             /// <summary>
            /// 把一个文件夹下所有文件复制到另一个文件夹下
            /// </summary>
            /// <param name="srcPath">当前文件夹</param>
            /// <param name="destPath">copy到新文件</param>
            public static void CopyDirectory(string srcPath, string destPath)
            {
                try
                {
                    DirectoryInfo dir = new DirectoryInfo(srcPath);
                    FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();  //获取目录下(不包含子目录)的文件和子目录
                    foreach (FileSystemInfo i in fileinfo)
                    {
                        if (i is DirectoryInfo)     //判断是否文件夹
                        {
                            if (!Directory.Exists(destPath + "\" + i.Name))
                            {
                                Directory.CreateDirectory(destPath + "\" + i.Name);   //目标目录下不存在此文件夹即创建子文件夹
                            }
                            CopyDirectory(i.FullName, destPath + "\" + i.Name);    //递归调用复制子文件夹
                        }
                        else
                        {
                            File.Copy(i.FullName, destPath + "\" + i.Name, true);      //不是文件夹即复制文件,true表示可以覆盖同名文件
                        }
                    }
                }
                catch (Exception e)
                {
                    throw;
                }
            }
    
            /// <summary>
            /// copy文件夹到另外一个文件夹下面
            /// </summary>
            /// <param name="srcPath">需要copy的文件夹</param>
            /// <param name="destPath">copy的目标文件夹</param>
            /// <param name="notCopyFolder">不需要copy的文件夹</param>
            /// <param name="notCoyeFile">不需要copy的文件例如 web.config</param>
            public static void CopyDirectory(string srcPath, string destPath, List<string> notCopyFolder, List<string> notCopyFile)
            {
                try
                {
                    DirectoryInfo dir = new DirectoryInfo(srcPath);
                    FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();  //获取目录下(不包含子目录)的文件和子目录
                    foreach (FileSystemInfo i in fileinfo)
                    {
                        if (i is DirectoryInfo)     //判断是否文件夹
                        {
                            var cf = notCopyFolder.Where(x => x.Contains(i.Name.ToUpper())).ToList();
                            if (cf.Count > 0)
                            {
                                continue;
                            }
                            if (!Directory.Exists(destPath + "\" + i.Name))
                            {
                                Directory.CreateDirectory(destPath + "\" + i.Name);   //目标目录下不存在此文件夹即创建子文件夹
                            }
                            CopyDirectory(i.FullName, destPath + "\" + i.Name);    //递归调用复制子文件夹
                        }
                        else
                        {
                            var tf = notCopyFile.Where(x => x.Contains(i.Name)).ToList();
                            if (tf.Count > 0)
                            {
                                continue;
                            }
                            File.Copy(i.FullName, destPath + "\" + i.Name, true);      //不是文件夹即复制文件,true表示可以覆盖同名文件
                        }
                    }
                }
                catch (Exception e)
                {
                    throw;
                }
            }
    
            /// <summary>
            ///删除目录下的所有文件及文件夹
            /// </summary>
            /// <param name="strPath"></param>
            public static void DeleteDirFiles(string strPath)
            {
                FileAttributes attr = File.GetAttributes(strPath);
                if (attr == FileAttributes.Directory)
                {
                    Directory.Delete(strPath, true);
                }
                else
                {
                    File.Delete(strPath);
                }
            }
    
            /// <summary>
            /// 根据路径删除文件
            /// </summary>
            /// <param name="path"></param>
            public static void DeleteFile(string path)
            {
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                FileAttributes attr = File.GetAttributes(path);
                if (attr == FileAttributes.Directory)
                {
                    Directory.Delete(path, true);
                }
                else
                {
                    File.Delete(path);
                }
            }
    
            /// <summary>
            ///路径转换为相对路径
            /// </summary>
            /// <param name="imageurl1"></param>
            /// <returns></returns>
            public static string UrlConvertToR(string url)
            {
                string tmpRootDir = System.Web.HttpContext.Current.Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString()); //获取程序根目录
                string imageurl2 = url.Replace(tmpRootDir, "");  //转换成相对路径
                imageurl2 = imageurl2.Replace(@"", @"/");
                return imageurl2;
            }
    
            /// <summary>
            /// 删除目录下的所有文件及文件夹
            /// </summary>
            /// <param name="strPath"></param>
            public static void DeleteFilePath(string strPath)
            {
                //删除这个目录下的所有子目录
                if (Directory.GetDirectories(strPath).Length > 0)
                {
                    foreach (string var in Directory.GetDirectories(strPath))
                    {
                        Directory.Delete(var, true);
                    }
                }
                //删除这个目录下的所有文件
                if (Directory.GetFiles(strPath).Length > 0)
                {
                    foreach (string var in Directory.GetFiles(strPath))
                    {
                        File.Delete(var);
                    }
                }
            }
    
            /// <summary>
            /// 得到文件夹
            /// </summary>
            /// <param name="Path">The path.</param>
            /// <returns></returns>
            public static FileInfo[] GetFileInfos(string path)
            {
                DirectoryInfo dir = new DirectoryInfo(path);
                FileInfo[] inf = dir.GetFiles();
                return inf;
            }
    
            /// <summary>
            /// 文件重新命名
            /// </summary>
            /// <param name="deFaultFileName"></param>
            /// <param name="newFileName"></param>
            public static void FileRename(string deFaultFileName, string newFileName)
            {
                FileInfo fi = new FileInfo(deFaultFileName);
                fi.MoveTo(Path.Combine(newFileName));
            }
  • 相关阅读:
    Codeforces Round #541 (Div. 2) D 并查集 + 拓扑排序
    Educational Codeforces Round 60 D dp + 矩阵快速幂
    Educational Codeforces Round 60 C 思维 + 二分
    Codeforces Round #544 (Div. 3) dp + 双指针
    Codeforces Round #542(Div. 2) CDE 思维场
    UVA
    UVA
    UVA
    UVA
    UVA
  • 原文地址:https://www.cnblogs.com/hbh123/p/9566202.html
Copyright © 2011-2022 走看看