C#遍历硬盘

nike591y 2006-03-02 08:15:52
想用C#写个遍历硬盘的程序,就像windows里的文件查找功能或各种杀毒软件的全盘扫描功能那样。我原先用WIN32 API试着写过,但始终解决不了广度和深度的问题,所以现在想用C#试试,请高手们指导指导。谢谢
...全文
433 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jrl5365 2006-03-05
  • 打赏
  • 举报
回复
好的,留一记号
兔子-顾问 2006-03-05
  • 打赏
  • 举报
回复
很满的。尤其递归。你想象。开辟一个新的栈。那需要时间把。硬盘上多少目录。。。。
marvelstack 2006-03-05
  • 打赏
  • 举报
回复
递归文件目录,
http://blog.csdn.net/zhzuo/archive/2005/03/08/315125.aspx
nike591y 2006-03-04
  • 打赏
  • 举报
回复
二楼的朋友,能否看看你用API写的代码。
gp341 2006-03-02
  • 打赏
  • 举报
回复
private void FillDirectoryTree(TreeView tvw,string rootDirectoryName, bool isSource)
{

tvw.Nodes.Clear();

//获取系统上的所有逻辑驱动器
string[] strDrives = Environment.GetLogicalDrives();
try
{
//获取驱动器顶级目录列表
DirectoryInfo dir = new DirectoryInfo(rootDirectoryName);
dir.GetDirectories();

TreeNode ndRoot = new TreeNode(rootDirectoryName);
tvw.Nodes.Add(ndRoot);
if (isSource)
{
GetSubDirectoryNodes(ndRoot, ndRoot.Text, true);
}
else
{
GetSubDirectoryNodes(ndRoot, ndRoot.Text, false);
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}

}
upshania 2006-03-02
  • 打赏
  • 举报
回复
递规这个 GetFolderList 方法。。提供一个父级路径给他
upshania 2006-03-02
  • 打赏
  • 举报
回复
#region 获得文件夹列表
/// <summary>
/// 获得文件夹列表
/// </summary>
/// <param name="parentFolder">父文件夹路径</param>
/// <returns>返回文件夹集</returns>
public static string[,] GetFolderList(string ParentFolder)
{
if (!Directory.Exists(ParentFolder))
return null;



Scripting.FileSystemObject fso=new Scripting.FileSystemObjectClass(); //fso文件操作对象
string[] folders = Directory.GetDirectories(ParentFolder);
int count = folders.Length;
string[,] str = new string[count,4];
int index=0;
foreach (string dir in folders)
{
long sizeNum=Convert.ToInt64(fso.GetFolder(dir).Size);
str[index,0]=(fso.GetFolder(dir).Name);//文件名
str[index,1]=StrManage.DisplayFileSize(sizeNum);//大小
str[index,2]=fso.GetFolder(dir).DateLastModified.ToString();
str[index,3]=StrManage.AttributesReplace(fso.GetFolder(dir).Attributes.ToString());
index++;
}

//由于下面的方法要生成实例。很慢。。所以杀掉换成上面的方法
/*
Scripting.FileSystemObject fso=new Scripting.FileSystemObjectClass(); //fso文件操作对象
DirectoryInfo directoryPath=new DirectoryInfo(ParentFolder);
int count = directoryPath.GetDirectories().Length;
string[,] str = new string[count,4];
DirectoryInfo[] directoryList=directoryPath.GetDirectories();
int index=0;
foreach(DirectoryInfo tempPath in directoryList)
{
long sizeNum=Convert.ToInt64(fso.GetFolder(tempPath.FullName).Size);
str[index,0]=(tempPath.Name);//文件名
str[index,1]=StrManage.DisplayFileSize(sizeNum);//大小
str[index,2]=tempPath.LastAccessTime.ToString(); //最后访问的时间
str[index,3]=StrManage.AttributesReplace(tempPath.Attributes.ToString());
index++;
}

*/
return str;

}
#endregion
達魔 2006-03-02
  • 打赏
  • 举报
回复
用哪种语言都可以实现的,WIN API很容易的,很久以前我刚学VC的时候弄过一个。
要用到递归。
1.得到当前系统中的盘符个数以及盘符内容。
2.循环处理每一个盘符;
3.递归查找指定盘符下的所有文件夹和文件
WIN32 API中有获得指定路径下的第一个文件和获得指定文件的下一个文件的两个函数,用这两个函数就可以实现了。
C#中在Sytem.IO命名空间下有关于文件和路径的类,你一查便知

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧