HiveBrain v1.2.0
Get Started
← Back to all entries
patterncsharpMinor

Extracting files and directories from a provided list into separate lists

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
intoprovidedseparatefilesextractinglistsandlistfromdirectories

Problem

This code gets a list of all files and directories from a specific location. Thes code below works.

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 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.