读取文件夹列表、删除文件夹及文件夹中的内容

最近在做文件读取的东西,长时间没有做这当面东西,感觉还是很生疏,当然百度了不少,下面是最终用到的方法,贴出来,以防止后面我忘了,给需要的人也提供一些资源吧!

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

 

posted on 2017-12-01 16:43  hehedada  阅读(442)  评论(0编辑  收藏  举报

导航