Changed: accessible-directory refactoring
This commit is contained in:
parent
1d43e19ce2
commit
53ee21acf4
@ -289,7 +289,7 @@ namespace RandomFileRunner
|
|||||||
|
|
||||||
if (File.Exists(item))
|
if (File.Exists(item))
|
||||||
{
|
{
|
||||||
if (SmartDirectory.IsFileAccessible(item))
|
if (AccessibleDirectory.IsFileAccessible(item))
|
||||||
{
|
{
|
||||||
foundFiles.Add(item);
|
foundFiles.Add(item);
|
||||||
ThreadControl.SetText(label2, foundFiles.Count.ToString());
|
ThreadControl.SetText(label2, foundFiles.Count.ToString());
|
||||||
@ -300,7 +300,7 @@ namespace RandomFileRunner
|
|||||||
|
|
||||||
if (Directory.Exists(item))
|
if (Directory.Exists(item))
|
||||||
{
|
{
|
||||||
SmartDirectory.GetFiles(item, textBox1.Text, this.CurrentSession.SearchTopDirectoryOnly, SearchDirecory_OnFound);
|
AccessibleDirectory.GetFiles(item, textBox1.Text, this.CurrentSession.SearchTopDirectoryOnly, SearchDirecory_OnFound);
|
||||||
|
|
||||||
ThreadControl.SetText(label2, foundFiles.Count.ToString());
|
ThreadControl.SetText(label2, foundFiles.Count.ToString());
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ using System.Linq;
|
|||||||
|
|
||||||
namespace RandomFileRunner.IO
|
namespace RandomFileRunner.IO
|
||||||
{
|
{
|
||||||
public class SmartDirectory
|
public class AccessibleDirectory
|
||||||
{
|
{
|
||||||
|
|
||||||
public static List<string> GetFiles(string path, string pattern, bool searchTopOnly)
|
public static List<string> GetFiles(string path, string pattern, bool searchTopOnly)
|
||||||
@ -73,6 +73,68 @@ namespace RandomFileRunner.IO
|
|||||||
return fileList;
|
return fileList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<string> EnumerateFiles(string path, string pattern, bool searchTopOnly)
|
||||||
|
{
|
||||||
|
List<string> directoryList = new List<string>();
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(pattern)) pattern = "*";
|
||||||
|
|
||||||
|
directoryList.Add(path);
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
if (directoryList.Count <= 0)
|
||||||
|
{
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
|
||||||
|
string directory = directoryList.First();
|
||||||
|
directoryList.RemoveAt(0);
|
||||||
|
|
||||||
|
if (IsDirectoryAccessible(directory))
|
||||||
|
{
|
||||||
|
IEnumerable<string> searchDirList = new List<string>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
searchDirList = Directory.EnumerateDirectories(directory, "*", SearchOption.TopDirectoryOnly);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!searchTopOnly)
|
||||||
|
{
|
||||||
|
foreach (string item in searchDirList)
|
||||||
|
{
|
||||||
|
if (!IsDirectoryAccessible(item))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
directoryList.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string item in Directory.EnumerateFiles(directory, "*", SearchOption.TopDirectoryOnly))
|
||||||
|
{
|
||||||
|
if (!MatchFileSearchPattern(pattern, Path.GetFileName(item)))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!IsFileAccessible(item))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
yield return item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void GetFiles(string path, string pattern, bool searchTopOnly, Func<string, ulong, int, bool> callback)
|
public static void GetFiles(string path, string pattern, bool searchTopOnly, Func<string, ulong, int, bool> callback)
|
||||||
{
|
{
|
||||||
List<string> directoryList = new List<string>();
|
List<string> directoryList = new List<string>();
|
||||||
@ -142,6 +204,16 @@ namespace RandomFileRunner.IO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsAccessible(string path)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(path)) return false;
|
||||||
|
|
||||||
|
if (File.Exists(path)) return IsFileAccessible(path);
|
||||||
|
if (Directory.Exists(path)) return IsDirectoryAccessible(path);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public static bool IsFileAccessible(string filename)
|
public static bool IsFileAccessible(string filename)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(filename)) return false;
|
if (string.IsNullOrWhiteSpace(filename)) return false;
|
Loading…
Reference in New Issue
Block a user