W7マシンのc:\ Users\UserNameディレクトリにあるすべてのフォルダのリストを取得しようとしています。
私が使用するとき、Directory.GetDirectories()
またはDirectory.GetFiles()
「パスへのアクセスが拒否された」という例外が頻繁に発生するという問題があります。管理者モードでVSを実行しましたが、うまくいきませんでした。私のC#で説明されている理由-すべてのファイルにアクセスできない
サブフォルダーの深さがN(つまり、サブフォルダーの数が不明)である可能性があるすべてのサブフォルダーの名前(フォルダー内にファイルがあるかどうかに関係なく)を取得し、それらをリストとして保存する方法を知りたいです。このように、foreachループを介して、特定のロジックに対してフォルダーごとにチェックし、アクセス権があり、アクセスが必要であることを確認できます。
次のコードは、1レベルの深さのみを調べます。
private List<string> GetAllFolders()
{
DirectoryInfo directoryInfo = new DirectoryInfo(this.sourceFolder);
List<string> allFolders = new List<string>();
foreach (DirectoryInfo subDirectoryInfo in directoryInfo.GetDirectories())
{
//logic
allFolders.Add(subDirectoryInfo.FullName);
}
return allFolders;
}
これに使用できるパターンはありますか、またはどのように進めるかについての例や提案がありますか?