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);
}
}
}
}
C#获取指定路径下的文件信息
本文转载:CSDN博客