操作系统:WINDOWS_XP
说明:
程序的目地是通过递归算法遍历指定路径下,所有目录及其子目录。下面的代码当遇到无权限访问的目录时,程序中断执行(如:System Volume Information目录),有什么办法可以略过这些目录,让程序断续向下执行呢?请大侠们指点!!谢谢。
代码(还未完成):
private void FindBrothers(string targetPath)
{
try
{
string[] directoryName = Directory.GetDirectories(targetPath);
if (directoryName.Length != 0)
{
foreach (string dirName in directoryName)
{
FindBrothers(dirName);
textBoxMessage.Text += dirName + "\r\n";
}
}
}
catch (UnauthorizedAccessException e)
{
textBoxMessage.Text = e.Message + "===>忽略对此目录的处理!\r\n";
}
catch (Exception e)
{
textBoxMessage.Text = e.Message;
}
}
说明:
程序的目地是通过递归算法遍历指定路径下,所有目录及其子目录。下面的代码当遇到无权限访问的目录时,程序中断执行(如:System Volume Information目录),有什么办法可以略过这些目录,让程序断续向下执行呢?请大侠们指点!!谢谢。
代码(还未完成):
private void FindBrothers(string targetPath)
{
try
{
string[] directoryName = Directory.GetDirectories(targetPath);
if (directoryName.Length != 0)
{
foreach (string dirName in directoryName)
{
FindBrothers(dirName);
textBoxMessage.Text += dirName + "\r\n";
}
}
}
catch (UnauthorizedAccessException e)
{
textBoxMessage.Text = e.Message + "===>忽略对此目录的处理!\r\n";
}
catch (Exception e)
{
textBoxMessage.Text = e.Message;
}
}
解决方案 »
- C# WinForm做个照片编辑程序怎么给照片加相框
- 急,急,急,值类型数据怎么判断空值的情况??
- 求经典的winform实例C#
- 求助如何用 textbox控件接收 combox控件的Item值?
- 多线程 求教
- 水晶报表字段类型
- 关于PDF417条码控件的问题
- 请高手帮帮忙 小弟的程序老是没有动静,是用线程搜索局域网IP及用户名称 急在线等
- crystal reports(vs2003自带的)在vs2003中使用时出现提示 无效密鈅号码 ,此时crystal reports不能用了,如何解决?
- Göteborg字符转换保存到数据库后就变成G?teborg,怎么才能正确保存和显示呢?
- 求一道算法面试题
- 图片上传,图片正在使用无法访问
catch的时候continue就可以了
{
foreach (string dirName in directoryName)
{
FindBrothers(dirName);
textBoxMessage.Text += dirName + "\r\n";
}
}
catch()
{}
{
try
{
FindBrothers(dirName);
}catch{}
textBoxMessage.Text += dirName + "\r\n";
}
}
或
string[] directoryName = Directory.GetDirectories(targetPath);
if (directoryName.Length != 0)
{
foreach (string dirName in directoryName)
{try
{
FindBrothers(dirName);
textBoxMessage.Text += dirName + "\r\n";
}
catch{ FindBrothers(dirName);
}
}
}
class Program
{
static int i = 0;
static void Main(string[] args)
{
string strPath = Console.ReadLine();
DirectoryInfo di = new DirectoryInfo(strPath);
Console.WriteLine(di.Name);
OutPutFiles(di); Console.ReadLine();
} /// <summary>
/// 打印输入路径中的所有子文件和子文件夹
/// </summary>
/// <param name="di">要显示的路径</param>
static void OutPutFiles(DirectoryInfo di)
{
try
{
foreach (FileSystemInfo fsi in di.GetFileSystemInfos())
{
i++;
OutputSpace(i);
Console.WriteLine(fsi.Name);
if ((fsi as DirectoryInfo)!=null)
{
OutPutFiles((DirectoryInfo)fsi);
}
i--;
}
}
catch {}
} /// <summary>
/// 打印阶梯空格以显示文件等级
/// </summary>
/// <param name="i">等级标识</param>
static void OutputSpace(int i)
{
for (int j = 0; j < i; j++)
{
Console.Write(" ");
}
}
}
改成
string[] directoryName = null;
try
{
directoryName = Directory.GetDirectories(targetPath);
}
catch (UnauthorizedAccessException e)
{
textBoxMessage.Text = e.Message + "===>忽略对此目录的处理!\r\n";
}
catch (Exception e)
{
textBoxMessage.Text = e.Message;
}
if (directoryName.Length != 0)
{
foreach (string dirName in directoryName)
{
FindBrothers(dirName);
textBoxMessage.Text += dirName + "\r\n";
}
}
应该就可以了
“textBoxMessage.Text = e.Message + "===>忽略对此目录的处理!\r\n"; ”所以,以前遍历目录路径的信息记录,被新的信息给覆盖了(只显示遇到System Volume Information目录前处理的几个目录信息,而System Volume Information目录巧和的是,它是程序最后一个处理的)。。误认为是处理到这个目录后,程序就中断了执行。。