[ad_1]
WPFを使用してフォトビューアアプリを作成しています。
UI では、左側のペインにドライブとフォルダーがリストされます。 treeview
; 右側のペインには、選択したフォルダー内のすべての写真がリストされます。 treeview
。
ループしてアイテムをフォルダーに追加するとき ツリー表示、隠しフォルダーやアクセスできないフォルダーを除外するにはどうすればよいですか?
現在のコードは次のとおりです。
private void LoadDrives() { DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo drive in allDrives) { if (drive.DriveType == DriveType.Fixed || drive.DriveType == DriveType.Removable) { var drivetvItem = new TreeViewItem(); drivetvItem.Header = drive.Name; drivetvItem.Tag = drive.Name; LoadParentFolders(drive.Name, drivetvItem); CanvasFolderBrowser.Items.Add(drivetvItem); } } } private TreeViewItem LoadParentFolders(string drive, TreeViewItem drivetvItem) { DirectoryInfo dirInfo = new DirectoryInfo(drive); DirectoryInfo[] dirInfoList = dirInfo.GetDirectories(); foreach (DirectoryInfo dir in dirInfoList) { var directorytvItem = new TreeViewItem(); directorytvItem.Header = dir.Name; directorytvItem.Tag = dir.FullName; LoadChildFolders(dir.FullName, directorytvItem); drivetvItem.Items.Add(directorytvItem); } return drivetvItem; } private TreeViewItem LoadChildFolders (string parentfolder, TreeViewItem directorytvItem) { DirectoryInfo dirInfo = new DirectoryInfo(parentfolder); DirectoryInfo[] dirInfoList = dirInfo.GetDirectories(); foreach (DirectoryInfo dir in dirInfoList) { var subdirectorytvItem = new TreeViewItem(); subdirectorytvItem.Header = dir.Name; subdirectorytvItem.Tag = dir.FullName; LoadChildFolders(dir.FullName, subdirectorytvItem); directorytvItem.Items.Add(subdirectorytvItem); } return directorytvItem; }
私が試したこと:
知っている fileinfo
持っています GetAttributes
方法。 似たようなものは見つかりません directoryinfo
。
解決策 1
FileSystemInfos の詳細は、ファイルだけでなくディレクトリに対しても機能します。を参照してください。 DirectoryInfo.GetFileSystemInfos メソッド (System.IO) Microsoft Learn[^]。
解決策 2
両方 DirectoryInfo
そして FileInfo
から継承する FileSystemInfo
を提供します。 の Attributes
財産[^]。
注意: どちらのクラスにもありません GetAttributes
方法。 おそらくあなたは次のことを考えています File.GetAttributes[^]、ファイルまたはディレクトリに対して機能します。 ただし、これは文字列として表現されたパスでは機能しますが、 FileInfo
/ DirectoryInfo
インスタンス。
注意2: 属性は、ファイルまたはディレクトリにアクセスできるかどうかに関する情報の一部にすぎません。 たとえば、NTFS ドライブでは、 DACL[^] 現在のユーザーがオブジェクトにアクセスできない可能性があります。
[ad_2]
コメント