mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[FileTools] Create method for finding empty directories
This commit is contained in:
@@ -92,11 +92,7 @@ namespace SabreTools.Helper.Dats
|
|||||||
// Now find all folders that are empty, if we are supposed to
|
// Now find all folders that are empty, if we are supposed to
|
||||||
if (!Romba && addBlanks)
|
if (!Romba && addBlanks)
|
||||||
{
|
{
|
||||||
List<string> empties = Directory
|
List<string> empties = FileTools.GetEmptyDirectories(basePath).ToList();
|
||||||
.EnumerateDirectories(basePath, "*", SearchOption.AllDirectories)
|
|
||||||
.Where(dir => Directory.EnumerateFileSystemEntries(dir, "*", SearchOption.AllDirectories).Count() == 0)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
Parallel.ForEach(empties,
|
Parallel.ForEach(empties,
|
||||||
Globals.ParallelOptions,
|
Globals.ParallelOptions,
|
||||||
dir =>
|
dir =>
|
||||||
@@ -278,11 +274,7 @@ namespace SabreTools.Helper.Dats
|
|||||||
if (addBlanks)
|
if (addBlanks)
|
||||||
{
|
{
|
||||||
// Get the list of empty directories
|
// Get the list of empty directories
|
||||||
List<string> empties = Directory
|
List<string> empties = FileTools.GetEmptyDirectories(tempSubDir).ToList();
|
||||||
.EnumerateDirectories(tempSubDir, "*", SearchOption.AllDirectories)
|
|
||||||
.Where(dir => Directory.EnumerateFileSystemEntries(dir, "*", SearchOption.AllDirectories).Count() == 0)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
Parallel.ForEach(empties,
|
Parallel.ForEach(empties,
|
||||||
Globals.ParallelOptions,
|
Globals.ParallelOptions,
|
||||||
dir =>
|
dir =>
|
||||||
|
|||||||
@@ -35,31 +35,6 @@ namespace SabreTools.Helper.Tools
|
|||||||
{
|
{
|
||||||
#region File Information
|
#region File Information
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Retrieve a list of files from a directory recursively in proper order
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="directory">Directory to parse</param>
|
|
||||||
/// <param name="infiles">List representing existing files</param>
|
|
||||||
/// <returns>List with all new files</returns>
|
|
||||||
public static List<string> RetrieveFiles(string directory, List<string> infiles)
|
|
||||||
{
|
|
||||||
// Take care of the files in the top directory
|
|
||||||
List<string> toadd = Directory.EnumerateFiles(directory, "*", SearchOption.TopDirectoryOnly).ToList();
|
|
||||||
toadd.Sort(new NaturalComparer());
|
|
||||||
infiles.AddRange(toadd);
|
|
||||||
|
|
||||||
// Then recurse through and add from the directories
|
|
||||||
List<string> dirs = Directory.EnumerateDirectories(directory, "*", SearchOption.TopDirectoryOnly).ToList();
|
|
||||||
dirs = Style.OrderByAlphaNumeric(dirs, s => s).ToList();
|
|
||||||
foreach (string dir in dirs)
|
|
||||||
{
|
|
||||||
infiles = RetrieveFiles(dir, infiles);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the new list
|
|
||||||
return infiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get what type of DAT the input file is
|
/// Get what type of DAT the input file is
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -193,6 +168,30 @@ namespace SabreTools.Helper.Tools
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get all empty folders within a root folder
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="root">Root directory to parse</param>
|
||||||
|
/// <returns>IEumerable containing all directories that are empty, an empty enumerable if the root is empty, null otherwise</returns>
|
||||||
|
public static IEnumerable<string> GetEmptyDirectories(string root)
|
||||||
|
{
|
||||||
|
// Check if the root exists first
|
||||||
|
if (!Directory.Exists(root))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If it does and it is empty, return a blank enumerable
|
||||||
|
if (Directory.EnumerateFileSystemEntries(root, "*", SearchOption.AllDirectories).Count() == 0)
|
||||||
|
{
|
||||||
|
return new List<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, get the complete list
|
||||||
|
return Directory.EnumerateDirectories(root, "*", SearchOption.AllDirectories)
|
||||||
|
.Where(dir => Directory.EnumerateFileSystemEntries(dir, "*", SearchOption.AllDirectories).Count() == 0);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Retrieve file information for a single file
|
/// Retrieve file information for a single file
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -250,6 +249,31 @@ namespace SabreTools.Helper.Tools
|
|||||||
return rom;
|
return rom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieve a list of files from a directory recursively in proper order
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="directory">Directory to parse</param>
|
||||||
|
/// <param name="infiles">List representing existing files</param>
|
||||||
|
/// <returns>List with all new files</returns>
|
||||||
|
public static List<string> RetrieveFiles(string directory, List<string> infiles)
|
||||||
|
{
|
||||||
|
// Take care of the files in the top directory
|
||||||
|
List<string> toadd = Directory.EnumerateFiles(directory, "*", SearchOption.TopDirectoryOnly).ToList();
|
||||||
|
toadd.Sort(new NaturalComparer());
|
||||||
|
infiles.AddRange(toadd);
|
||||||
|
|
||||||
|
// Then recurse through and add from the directories
|
||||||
|
List<string> dirs = Directory.EnumerateDirectories(directory, "*", SearchOption.TopDirectoryOnly).ToList();
|
||||||
|
dirs = Style.OrderByAlphaNumeric(dirs, s => s).ToList();
|
||||||
|
foreach (string dir in dirs)
|
||||||
|
{
|
||||||
|
infiles = RetrieveFiles(dir, infiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the new list
|
||||||
|
return infiles;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region File Manipulation
|
#region File Manipulation
|
||||||
|
|||||||
Reference in New Issue
Block a user