私がこれを行う場合:
var entries = new DirectoryInfo(@"C:\Folder1")
.GetFileSystemInfos("test*", SearchOption.AllDirectories);
「HiddenFolder」は非表示ですが、「test.txt」ファイルは非表示になっていない、このようなフォルダー構造がある場合:
C:\Folder1\
C:\Folder1\HiddenFolder\
C:\Folder1\HiddenFolder\test.txt
次に、「test.txt」ファイルを取得しないようにコーディングするにはどうすればよいですか?
(GetFileSystemInfos は隠しフォルダーをスキップすると思うかもしれませんが、そうではありません。)
ここに部分的な解決策があります
このコードは、隠しファイルと隠しフォルダーを削除しますが、隠しフォルダー内の隠しファイル以外は処理しません!
var includeLocalFolderNames = true; // to include folder names in the list
var hiddenFolders = new List<FileSystemInfo>();
return entries
.Where(entry =>
{
// skip if this entry is hidden, or it is in a hidden folder
var isHidden = (entry.Attributes & FileAttributes.Hidden) != 0;
if (isHidden)
{
hiddenFolders.Add(entry);
return false;
}
return !hiddenFolders.Any(fsi => entry.FullName.StartsWith(fsi.FullName));
})
.Where(entry =>
{
// include folder names if requested...
if (includeLocalFolderNames) return true;
return (entry.Attributes & FileAttributes.Directory) == 0;
})
.Select(entry => {
// do something...
return entry.Name;
});