在.NET 4.0中,您可以使用EnumerateFileSystemInfos
方法。例如,你可以寫,這將吞下UnauthorizedAccessException
對於某些文件下面的遞歸方法,只包括在結果中,您有權訪問這些文件:
public static IEnumerable<FileSystemInfo> SafeGetFileSystemInfosRecursive(DirectoryInfo directory, string searchPattern)
{
try
{
return directory
.EnumerateFileSystemInfos(searchPattern)
.Concat(
directory
.EnumerateDirectories()
.SelectMany(x => SafeGetFileSystemInfosRecursive(x, searchPattern))
);
}
catch (UnauthorizedAccessException)
{
return Enumerable.Empty<FileSystemInfo>();
}
}
,然後調用方法類似:
var dirInfo = new DirectoryInfo(Path_Tb_Path.Text);
FileSystemInfo[] entries = SafeGetFileSystemInfosRecursive(dirInfo, "**").ToArray();
「我得到一個錯誤」是不夠的信息 - 什麼*確切*是錯誤? – 2013-03-02 21:28:44
根據您提供的代碼,正在讀取的文件/文件夾不應該爲獲取FileSystemInfo而引發錯誤。您可能會遇到一些權限錯誤。但正如喬恩所說,沒有錯誤的細節,很難幫助你。 – publicgk 2013-03-02 21:59:09