using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Example
{
    public struct FInfo      //文件信息结构
    {
        public string filePath;      //文件路径
        public string fileName;       //文件名
        public string fileExtension;    //文件扩展名
        public FInfo(string fp, string fn, string fe)
        {
            this.filePath = fp;
            this.fileName = fn;
            this.fileExtension = fe;
        }
    }
    public class FileManage    //文档管理类
    {
        public List<FInfo> fileSour = new List<FInfo>();  //声明一个存储文件的列表
        public void AddFile(FInfo fi)      //将一个文件加入列表
        {
            fileSour.Add(fi);
        }
        public void RemoveFile(FInfo fi)  //删除一个文件
        {
            fileSour.Remove(fi);
        }
        public void SerchFile(DirectoryInfo path)         //搜索指定路径下的所有文件
        {
            //DirectoryInfo fileFold = new DirectoryInfo(path);
            if (!path.Exists)
            {
                Console.WriteLine("不存在文件夹{0}", path);
                return;
            }
            DirectoryInfo[] fileFolds = path.GetDirectories(); //获取指定文件夹下的所有子文件夹
            for (int i = 0; fileFolds != null && i < fileFolds.Length; i++)
            {
                try
                {
                    SerchFile(fileFolds[i]);  //递归搜索子文件夹
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    continue;
                }
            }
            FileInfo[] files = path.GetFiles(); //获取指定文件夹下的所有文件  
            for (int i = 0; files != null && i < files.Length; i++)  //将文件信息添加到List里面
            {
                try       //每个驱动盘会有一些特定的格式信息,不允许程序访问,如果要访问,则会出现错误
                {         //故,要跳过这些非文件信息
                    FInfo finfo = new FInfo(files[i].FullName, files[i].Name, files[i].Extension);
                    AddFile(finfo);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    continue;
                }
            }
        }
        public void SerchFile(DirectoryInfo path, string fe)  //搜索文件夹下所有扩展名为fe的文件
        {
            //DirectoryInfo fileFold = new DirectoryInfo(path);
            if (!path.Exists)
            {
                Console.WriteLine("不存在文件夹{0}", path);
                return;
            }
            DirectoryInfo[] fileFolds = path.GetDirectories(); //获取指定文件夹下的所有子文件夹
            for (int i = 0; fileFolds != null && i < fileFolds.Length; i++)
            {
                try
                {
                    SerchFile(fileFolds[i]);  //递归搜索子文件夹
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    continue;
                }
            }
            FileInfo[] files = path.GetFiles(); //获取指定文件夹下的所有文件  
            for (int i = 0; files != null && i < files.Length; i++)  //将文件信息添加到List里面
            {
                try
                {
                    if (files[i].Extension == fe)   //挑选出符合条件的信息
                    {
                        FInfo finfo = new FInfo(files[i].FullName, files[i].Name, files[i].Extension);
                        AddFile(finfo);
                    }
                    else
                    {
                        continue;
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    continue;
                }
            }
        }
        public void SerchDiskInfo()      //获取磁盘信息
        {
            DriveInfo[] allDirves = DriveInfo.GetDrives();
            //检索计算机上的所有逻辑驱动器名称
            foreach (DriveInfo item in allDirves)
            {
                //Fixed 硬盘
                //Removable 可移动存储设备,如软盘驱动器或USB闪存驱动器。
                Console.Write(item.Name + "---" + item.DriveType);
                if (item.IsReady)
                {
                    Console.Write(",容量:" + item.TotalSize + ",可用空间大小:" + item.TotalFreeSpace);
                }
                else
                {
                    Console.Write("没有就绪");
                }
                Console.WriteLine();
            }
        }
    }
    class Program
    {
        static void Main()
        {
            FileManage fm = new FileManage();
            fm.SerchDiskInfo();
            Console.WriteLine("请输入所要查找的磁盘,如C:\\");
            string filePath;
            filePath = Console.ReadLine();
            DirectoryInfo fileFold = new DirectoryInfo(filePath);
            fm.SerchFile(fileFold);
            for (int i = 0; i < 20; i++)
            {
                Console.WriteLine("{0}", fm.fileSour[i].filePath);
            }
        }
    }
}


本文转载:CSDN博客