patterncsharpMinor
Extracting files and directories from a provided list into separate lists
Viewed 0 times
intoprovidedseparatefilesextractinglistsandlistfromdirectories
Problem
This code gets a list of all files and directories from a specific location. Thes code below works.
I know that I need to protect from permission problem.
List FullList = new List(LoadFiles("patch.txt"));
List ShortCatalogList = new List();
List ShortFileList = new List();
for (int i = 0; i 0)
{
string[] subFile = Directory.GetFiles(FullList[i]);
for (int io = 0; io 0)
{
string[] subFolder = Directory.GetDirectories(FullList[i]);
for (int io = 0; io < subFolder.Length; io++)
{
FullList.Add(subFolder[io]);
}
}
}
}I know that I need to protect from permission problem.
Solution
Most is said about this code in the other answer, but there is a simplification which can be used to beautify this code a lot.
The
The results of the calls to this methods can be used to call
Like so
The
Directory class has two methods which returns IEnumerable namely EnumerateFiles() and EnumerateDirectories(). The results of the calls to this methods can be used to call
AddRange() on the ShortFileList and FullList. Like so
List fullList = new List(LoadFiles("patch.txt"));
List shortCatalogList = new List();
List shortFileList = new List();
for (int i = 0; i < fullList.Count; i++)
{
if (System.IO.Path.HasExtension(fullList[i]))
{
shortFileList.Add(fullList[i]);
continue;
}
shortCatalogList.Add(fullList[i]);
var files = Directory.EnumerateFiles(fullList[i]);
shortFileList.AddRange(files);
var directories = Directory.EnumerateDirectories(fullList[i]);
fullList.AddRange(directories);
}Code Snippets
List<string> fullList = new List<string>(LoadFiles("patch.txt"));
List<string> shortCatalogList = new List<string>();
List<string> shortFileList = new List<string>();
for (int i = 0; i < fullList.Count; i++)
{
if (System.IO.Path.HasExtension(fullList[i]))
{
shortFileList.Add(fullList[i]);
continue;
}
shortCatalogList.Add(fullList[i]);
var files = Directory.EnumerateFiles(fullList[i]);
shortFileList.AddRange(files);
var directories = Directory.EnumerateDirectories(fullList[i]);
fullList.AddRange(directories);
}Context
StackExchange Code Review Q#114137, answer score: 5
Revisions (0)
No revisions yet.