所以这就是我现在所拥有的。我在这里得到了很多红线,不知道为什么。我需要知道如何获取下面你给我的代码并将其放入一个复选框方法,以便当你点击下一个标记的按钮时它会运行。
public Question()
{
InitializeComponent();
}
private void Question_Load(object sender, EventArgs e)
{}
private void Exit_Click(object sender, EventArgs e)
{
Close();
}
private void UnRe_CheckedChanged(object sender, EventArgs e)
{
if (UnRe.Checked == true)
{
string rootDirectory = System.IO.DriveInfo.GetDrives()[0].RootDirectory.FullName;
string[] files = System.IO.Directory.GetFiles( rootDirectory,
"file.exe", System.IO.SearchOption.AllDirectories);
}
}// closes class
private void Infection_CheckedChanged(object sender, EventArgs e)
{
if (Support.Checked == true)
{}
}
private void Other_CheckedChanged(object sender, EventArgs e)
{}
private void Next_Click(object sender, EventArgs e)
{}
IEnumerable<string> GetAllAuthorizedFiles(string root, string searchPattern)
{
foreach (var fname in GetAuthorizedFiles(root, searchPattern))
yield return fname;
foreach (var dir in GetAuthorizedDirectories(root))
{
foreach (var fname in GetAllAuthorizedFiles(dir, searchPattern))
yield return fname;
}
}
string[] GetAuthorizedDirectories(string root)
{
try
{
return Directory.GetDirectories(root);
}
catch (UnauthorizedAccessException)
{
return new string[0];
}
}
string[] GetAuthorizedFiles(string root, string searchPattern)
{
try
{
return Directory.GetFiles(root, searchPattern);
}
catch (UnauthorizedAccessException)
{
return new string[0];
}
}
答案 0 :(得分:1)
如果时间不是你所说的问题,你可以遍历试图获取文件的所有目录。每当你遇到UnauthorizedAccessExcpetion时,你只需忽略该目录并移动到下一个目录。
以下是Hans Passant建议的递归文件枚举方法的实现:
IEnumerable<string> GetAllAuthorizedFiles(string root, string searchPattern)
{
foreach (var fname in GetAuthorizedFiles(root, searchPattern))
yield return fname;
foreach (var dir in GetAuthorizedDirectories(root))
{
foreach (var fname in GetAllAuthorizedFiles(dir, searchPattern))
yield return fname;
}
}
string[] GetAuthorizedDirectories(string root)
{
try
{
return Directory.GetDirectories(root);
}
catch (UnauthorizedAccessException)
{
return new string[0];
}
}
string[] GetAuthorizedFiles(string root, string searchPattern)
{
try
{
return Directory.GetFiles(root, searchPattern);
}
catch (UnauthorizedAccessException)
{
return new string[0];
}
}
以下是您从代码中调用它的方式:
string[] files = GetAllAuthorizedFiles(rootDirectory, "File.exe").ToArray();