1
我嘗試從c:\開始將所有文件和文件夾提取到樹形數據結構中。每運行一次,我得到了未授權的某些直播的例外。 我發現在得到異常時繼續運行的唯一解決方案是使用try-catch,但在這種情況下,運行的持續時間約爲1分鐘。 是否有另一種解決方案來檢查是否對文件夾沒有權限?嘗試獲取文件夾名稱時發生未經授權的異常
我也嘗試使用directoryName.Exsists - 它沒有工作。
我的代碼:
private static void getAllFilesAndFoldersInPath(TreeView treeView, string path)
{
treeView.Items.Clear();
var stack = new Stack<TreeViewItem>();
var rootDirectory = new DirectoryInfo(path);
TreeViewItem node = new TreeViewItem();
node.Header = rootDirectory;
stack.Push(node);
while (stack.Count > 0)
{
var currentNode = stack.Pop();
var directoryInfo = (DirectoryInfo)currentNode.Header;
try
{
foreach (var directory in directoryInfo.GetDirectories())
{
if (!directory.Name.StartsWith("$"))
{
TreeViewItem childDirectoryNode = new TreeViewItem();
childDirectoryNode.Header = directory;
currentNode.Items.Add(childDirectoryNode);
stack.Push(childDirectoryNode);
}
}
foreach (var file in directoryInfo.GetFiles())
{
if (System.IO.Path.GetFileName(file.Name).StartsWith("~$") || System.IO.Path.GetExtension(file.Name) == ".tmp")
{
continue;
}
TreeViewItem tempNode = new TreeViewItem();
tempNode.Header = file;
currentNode.Items.Add(tempNode);
}
}
catch (UnauthorizedAccessException e) { }
}
treeView.Items.Add(node);
}
您傳遞給函數的路徑是否允許該應用程序的用戶使用? –
你似乎認爲由於未經授權而導致的例外情況會讓你失望很多。不太可能,雖然例外花費了一點,但成本並不高。如果你在調試器中運行,它們是非常昂貴的,但不是這樣。它需要一分鐘的原因是因爲你看看系統中的每個文件。將文件掩碼傳遞給getfile調用會更好 – pm100