melika
melika

Reputation: 97

How to get all the files inside a folder?

In my program I have a treeview and a folderbrowser and a datagridview. The user uses the folder browser to choose a folder which contains bunch of shows which all have different seasons. My program displays the folders for the shows and the season folders inside them in the treeview and each time the select a folder from treeview I want it to display all the files inside that folder. I am currectly using this code:

public void fileProcessDirectory(string targetDirectory, string Name)
    {

        string[] fileEntries = Directory.GetFiles(targetDirectory);
        foreach (string fileName in fileEntries)
        {
            FileProcessFile(fileName);
        }
        string[] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
        foreach (string subdirectory in subdirectoryEntries)
        {
            fileProcessDirectory(subdirectory, Name);
            break;
        }

    }
    public void FileProcessFile(string path)
    {
        dataGridView.Rows.Add(path, "New");
    }

it shows the files inside the first sub folder that I have. it used to show all the files inside all the folders so I added a break and now it shows the first 3 files and stops there. So I want it to display the files inside the selected subfolder not all the sub folders.

Upvotes: 1

Views: 370

Answers (2)

Markiian Benovskyi
Markiian Benovskyi

Reputation: 2161

You can try to modify your function as this:

public void FileProcessDirectory(string targetDirectory, string subfolder)
{
    // this adds files
    foreach (string fileName in Directory.GetFiles(targetDirectory))
    {
        FileProcessFile(fileName);
    }

    // if we pass subfolder as empty then nothing happens
    if(string.IsNullOrEmpty(subfolder)) return;
    // here we find our subfolder and display files for it        
    FileProcessDirectory(Directory.GetDirectories(targetDirectory).Where(d => d == targetDirectory + "\\" + subfolder).ToArray()[0], null);
}

And the ussage example:

FileProcessDirectory(Directory.GetParent(Directory.GetCurrentDirectory()).FullName, "Debug");

Upvotes: 1

farbiondriven
farbiondriven

Reputation: 2468

Please correct my understanding if I'm wrong: user select the folder, then on treeview select the season then they should see in the data grid view all the files inside, correct ?

I implemented in this way

treeView1.NodeMouseDoubleClick += new TreeNodeMouseClickEventHandler(treeView1_NodeMouseClick);

if user double click on the treenode it shows all the files inside in the data grid:

void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        if (treeView1.SelectedNode != null)
        {
            dataGridView1.Rows.Clear();
            string[] fileEntries = System.IO.Directory.GetFiles(treeView1.SelectedNode.Text);
            foreach (string fileName in fileEntries)
            {

                dataGridView1.Rows.Add(Path.GetFileName(fileName));
            }
        }
    }

I guess the problem before maybe caused by the dataGrid not clearing the old files. Hope it helps.

Upvotes: 0

Related Questions