读取文件夹列表、删除文件夹及文件夹中的内容
最近在做文件读取的东西,长时间没有做这当面东西,感觉还是很生疏,当然百度了不少,下面是最终用到的方法,贴出来,以防止后面我忘了,给需要的人也提供一些资源吧!
1.删除文件
/// <summary> /// 删除文件 /// </summary> /// <param name="path"></param> /// <returns></returns> public static bool DeleteDir(string path) { try { DirectoryInfo dir = new DirectoryInfo(path); if (dir.Exists) { dir.Delete(true); } return true; } catch (Exception) { return false; } }
2.删除文件夹
/// <summary> /// 删除非空文件夹 /// </summary> /// <param name="path">要删除的文件夹目录</param> public static bool DeleteDirectory(string path) { try { DirectoryInfo dir = new DirectoryInfo(path); if (dir.Exists) { DirectoryInfo[] childs = dir.GetDirectories(); foreach (DirectoryInfo child in childs) { child.Delete(true); } dir.Delete(true); } return true; } catch (Exception) { return false; } }
3.检测文件夹是否存在
/// <summary> /// 检测文件是否存在 /// </summary> /// <param name="dirPath">路径</param> /// <returns></returns> public static bool GetExistsDirectory(string dirPath) { bool ren = false; //判断该路径是否存在(是否为文件夹) //判断该路径是否存在(是否为文件夹) if (!Directory.Exists(dirPath)) { FileInfo fileInfo = new FileInfo(dirPath); if (fileInfo.Exists) { ren = true; } else { ren = false; } } else { //定义一个DirectoryInfo对象 DirectoryInfo di = new DirectoryInfo(dirPath); foreach (FileInfo fi in di.GetFiles()) { if (fi.Exists) { ren = true; } else { ren = false; } } } return ren; }
4.文件大小
//所给路径中所对应的文件大小 public static long FileSize(string filePath) { //定义一个FileInfo对象,是指与filePath所指向的文件相关联,以获取其大小 FileInfo fileInfo = new FileInfo(filePath); return fileInfo.Length; }
5.获取指定路径的大小
/// <summary> /// 获取指定路径的大小 /// </summary> /// <param name="dirPath">路径</param> /// <returns></returns> public static long GetDirectoryLength(string dirPath) { long len = 0; //判断该路径是否存在(是否为文件夹) if (!Directory.Exists(dirPath)) { //查询文件的大小 len = FileSize(dirPath); } else { //定义一个DirectoryInfo对象 DirectoryInfo di = new DirectoryInfo(dirPath); //通过GetFiles方法,获取di目录中的所有文件的大小 foreach (FileInfo fi in di.GetFiles()) { len += fi.Length; } //获取di中所有的文件夹,并存到一个新的对象数组中,以进行递归 DirectoryInfo[] dis = di.GetDirectories(); if (dis.Length > 0) { for (int i = 0; i < dis.Length; i++) { len += GetDirectoryLength(dis[i].FullName); } } } return len; }
6.获取所传路径下的所有子目录
//获取所传路径下的所有子目录 public static List<string> GetAllDir(string rootPath) { List<string> filesList = new List<string>(); string[] subPaths = Directory.GetDirectories(rootPath);//得到所有子目录 foreach (string path in subPaths) { string filename=Path.GetFileName(path); filesList.Add(filename);//文件所在文件夹 } return filesList; }
7.获取所传路径以下的所有子目录以及子目录下面的文件
//获取所传路径以下的所有子目录以及子目录下面的文件 public static List<string> GetAllDirectories(string rootPath) { List<string> filesList = new List<string>(); string[] subPaths = Directory.GetDirectories(rootPath);//得到所有子目录 foreach (string path in subPaths) { GetAllDirectories(path);//对每一个字目录做与根目录相同的操作:即找到子目录并将当前目录的文件名存入List } string[] files = Directory.GetFiles(rootPath); foreach (string file in files) { filesList.Add(file);//将当前目录中的所有文件全名存入文件List } return filesList; }