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