static List<Model> list = new List<Model>();
static int num = 0; private void Form1_Load(object sender, EventArgs e)
{
string diskpath = System.Windows.Forms.Application.StartupPath.Split('\\')[0] + "\\";
ForEachDisk(diskpath);
MessageBox.Show(num.ToString());
} private void ForEachDisk(string path)
{
DirectoryInfo dir = new DirectoryInfo(path); try
{
foreach (DirectoryInfo d in dir.GetDirectories())
{
ForEachDisk(d.FullName);
}
}
catch (UnauthorizedAccessException ex)
{
} foreach (FileInfo f in dir.GetFiles())
{
Model m = new Model();
m.name = f.Name;
m.path = f.FullName;
list.Add(m);
listBox2.Items.Add(f.Name);
num++;
}
} } public class Model
{
private string _name;
//private string _type;
private string _path; public string name { get { return _name; } set { _name = value; } }
//public string type { get { return _type; } set { _type = value; } }
public string path { get { return _path; } set { _path = value; } }
}
用这个递归算法遍历出来的文件数量与windows统计的文件数量不一样,差10000多个文件?请问算法有什么问题?算法磁盘递归
static int num = 0; private void Form1_Load(object sender, EventArgs e)
{
string diskpath = System.Windows.Forms.Application.StartupPath.Split('\\')[0] + "\\";
ForEachDisk(diskpath);
MessageBox.Show(num.ToString());
} private void ForEachDisk(string path)
{
DirectoryInfo dir = new DirectoryInfo(path); try
{
foreach (DirectoryInfo d in dir.GetDirectories())
{
ForEachDisk(d.FullName);
}
}
catch (UnauthorizedAccessException ex)
{
} foreach (FileInfo f in dir.GetFiles())
{
Model m = new Model();
m.name = f.Name;
m.path = f.FullName;
list.Add(m);
listBox2.Items.Add(f.Name);
num++;
}
} } public class Model
{
private string _name;
//private string _type;
private string _path; public string name { get { return _name; } set { _name = value; } }
//public string type { get { return _type; } set { _type = value; } }
public string path { get { return _path; } set { _path = value; } }
}
用这个递归算法遍历出来的文件数量与windows统计的文件数量不一样,差10000多个文件?请问算法有什么问题?算法磁盘递归
解决方案 »
- window7下托盘菜单的问题
- 怎么制作一个自定义控件?
- 用vs2005开发,写代码的时候发现代码附近有一斜杠,关闭后重新打开vs2005该斜杠消失,请问是为什么?
- 对齐的问题,拉窗体的边框怎么都是左上对其啊?
- 为什么在winform中调用FindWindow可以,而webform中调用FindWindow却不行?
- 如何在.cs文件里面判断文本框的值是否数字,如果不是数字作出判断并返回!
- 谁能帮帮我啊?C# 调用API的问题
- Web应用程序上,当在TreeView上点击选定节点后,如何将其Text值传到另一个控件中去,如传到TextBox中去
- 程序UAC权限问题:管理员权限程序如何将被调用的程序以普通权限运行
- c#如何动态加载一个只有类的dll呢?
- 请帮我看看,为什么总是提示错误呢
- 求助,如何从xml中删除和修改带ID的元素
1.用throw把异常再抛出,让上层程序再抓一次,
2.写错误信息到日志文件中,这样出了你顶楼中的问题,你可以查看日志文件知道怎么回事,就不需要上csdn问了,
3.用messagebox显示一条错误信息,功能同2,让你知道是怎么回事,
4.return false,或者null之类的,告诉调用者,出错了,让调用者处理,这某种情况下比throw要方便,
避免异常,不应该吃掉,不Catch就是了。否则以后出了bug,都不知道怎么回事,就像你现在遇到的问题,少了文件,都不知道怎么回事。