C#利用DirectoryInfo遍历文件夹所有文件的类

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;//
using System.Collections;//

namespace ControlFile
{
    /// <summary>
    /// 文件操作类
    /// </summary>
    public class ControlFileClass
    {
         //字段声明
        private ArrayList fileListPath = new ArrayList();
        private ArrayList fileListName = new ArrayList();

        /// <summary>
        /// 文件路径
        /// </summary>
        public ArrayList FileListPath
        {
            get { return fileListPath; }
        }

        /// <summary>
        /// 文件名称
        /// </summary>
        public ArrayList FileListName
        {
            get { return fileListName; }
        }

        /// <summary>
        /// 构造函数并遍历文件夹获取文件名称,路径
        /// </summary>
        /// <param name="sourceDirectory">文件夹路径</param>
        /// <param name="nextFold">是否继续查找更深路径</param>
        public ControlFileClass(string sourceDirectory, bool nextFold)
        {
            DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
            GetAllList(diSource,nextFold);
        }

        public void GetAllList(DirectoryInfo source, bool nextFold)
        {
            try
            {
                foreach (FileInfo fi in source.GetFiles())
                {
                    fileListPath.Add(fi.FullName);
                    fileListName.Add(fi.Name);
                }
                if (nextFold)//如果设置为可以向更深目录遍历则遍历
                {
                    foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
                    {
                        GetAllList(diSourceSubDir, nextFold);
                    }
                }
                else//如果设置为不向更深目录遍历则直接用文件夹表示
                {
                    //遍历获取文件夹
                    foreach (DirectoryInfo d in source.GetDirectories())
                    {
                        fileListPath.Add(d.FullName);
                        fileListName.Add(d.Name);
                    }
                }
            }
            catch
            { }
        }

        /// <summary>
        /// 判断一个路径是文件还是文件夹
        /// </summary>
        /// <param name="fileName">文件路径</param>
        /// <returns>true:文件夹,false:文件</returns>
        public static bool IsFolder(string fileNamePath)
        {
            FileInfo fileInfo = new FileInfo(fileNamePath);
            if ((fileInfo.Attributes & FileAttributes.Directory) != 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 删除指定文件夹
        /// </summary>
        /// <param name="dir">文件夹路径</param>
        public static void DeleteFolder(string dirPath)
        {
            foreach (string d in Directory.GetFileSystemEntries(dirPath))
            {
                if (File.Exists(d))
                {
                    FileInfo fi = new FileInfo(d);
                    if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
                        fi.Attributes = FileAttributes.Normal;
                    File.Delete(d);//直接删除其中的文件   
                }
                else
                {
                    DeleteFolder(d);//递归删除子文件夹   
                }
            }
            Directory.Delete(dirPath);//删除已空文件夹   
        }
    }
}
posted @ 2010-12-27 15:02  Yao,Mane  阅读(1828)  评论(0编辑  收藏  举报