InSkipCollection and MakeHiddenIfAllItemsAreHidden

This commit is contained in:
2023-03-26 12:20:28 -07:00
parent bea7a172c5
commit 7b33fbe050
7 changed files with 75 additions and 10 deletions

View File

@ -18,6 +18,11 @@ public interface IPath
static void ChangeDateForEmptyDirectories(string rootDirectory, long ticks) =>
XPath.ChangeDateForEmptyDirectories(rootDirectory, ticks);
void TestStatic_MakeHiddenIfAllItemsAreHidden(string rootDirectory) =>
MakeHiddenIfAllItemsAreHidden(rootDirectory);
static void MakeHiddenIfAllItemsAreHidden(string rootDirectory) =>
XPath.MakeHiddenIfAllItemsAreHidden(rootDirectory);
void TestStatic_DeleteEmptyDirectories(string rootDirectory, List<string> deletedDirectories) =>
DeleteEmptyDirectories(rootDirectory, deletedDirectories);
static void DeleteEmptyDirectories(string rootDirectory, List<string> deletedDirectories) =>

View File

@ -190,4 +190,46 @@ internal abstract class XPath
}
}
internal static void MakeHiddenIfAllItemsAreHidden(string rootDirectory)
{
bool check;
FileInfo fileInfo;
IEnumerable<string> files;
DirectoryInfo directoryInfo;
IEnumerable<string> subDirectories;
string[] directories = Directory.GetDirectories(rootDirectory, "*", SearchOption.AllDirectories);
foreach (string directory in directories)
{
directoryInfo = new(directory);
if (directoryInfo.Attributes.HasFlag(FileAttributes.Hidden))
continue;
check = true;
subDirectories = Directory.EnumerateDirectories(directory, "*", SearchOption.TopDirectoryOnly);
foreach (string subDirectory in subDirectories)
{
directoryInfo = new(subDirectory);
if (!directoryInfo.Attributes.HasFlag(FileAttributes.Hidden))
{
check = false;
break;
}
}
if (!check)
continue;
files = Directory.EnumerateFiles(directory, "*", SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
fileInfo = new(file);
if (!fileInfo.Attributes.HasFlag(FileAttributes.Hidden))
{
check = false;
break;
}
}
if (!check)
continue;
directoryInfo.Attributes |= FileAttributes.Hidden;
}
}
}