142 votes

Liste de tous les fichiers et répertoires dans un répertoire + sous-répertoires

Je veux lister tous les fichiers et répertoires contenus dans un répertoire et les sous-répertoires de ce répertoire. Si je choisis C:\ comme répertoire, le programme obtiendra tous les noms de fichiers et de dossiers du disque dur auxquels il a accès.

Une liste pourrait ressembler à

fd\\1.txt
fd\\2.txt
fd\\a\\
fd\\b\\
fd\\a\\1.txt
fd\\a\\2.txt
fd\\a\\a\\
fd\\a\\b\\
fd\\b\\1.txt
fd\\b\\2.txt
fd\\b\\a
fd\\b\\b
fd\\a\\a\\1.txt
fd\\a\\a\\a\\
fd\\a\\b\\1.txt
fd\\a\\b\\a
fd\\b\\a\\1.txt
fd\\b\\a\\a\\
fd\\b\\b\\1.txt
fd\\b\\b\\a

-1voto

رضا جون Points 1

Créer une liste de chaînes

    public static List<string> HTMLFiles = new List<string>();

 private void Form1_Load(object sender, EventArgs e)
        {

     HTMLFiles.AddRange(Directory.GetFiles(@"C:\DataBase", "*.txt"));
            foreach (var item in HTMLFiles)
            {
                MessageBox.Show(item);
            }

}

-2voto

Peka Points 1

Un peu simple et lent mais qui fonctionne ! !! si vous ne donnez pas de chemin d'accès, utilisez le "fixPath", c'est juste un exemple.... vous pouvez rechercher le type de fichier correct que vous voulez, j'ai fait une erreur quand j'ai choisi le nom de la liste parce que la "temporaryFileList" est la liste des fichiers recherchés donc continuez comme ça.... et la "errorList" parle d'elle même

 static public void Search(string path, string fileType, List<string> temporaryFileList, List<string> errorList)
    {

        List<string> temporaryDirectories = new List<string>();

        //string fix = @"C:\Users\" + Environment.UserName + @"\";
        string fix = @"C:\";
        string folders = "";
        //Alap útvonal megadása 
        if (path.Length != 0)
        { folders = path; }
        else { path = fix; }

        int j = 0;
        int equals = 0;
        bool end = true;

        do
        {

            equals = j;
            int k = 0;

            try
            {

                int foldersNumber = 
                Directory.GetDirectories(folders).Count();
                int fileNumber = Directory.GetFiles(folders).Count();

                if ((foldersNumber != 0 || fileNumber != 0) && equals == j)
                {

                    for (int i = k; k < 
                    Directory.GetDirectories(folders).Length;)
                    {

             temporaryDirectories.Add(Directory.GetDirectories(folders)[k]);
                        k++;
                    }

                    if (temporaryDirectories.Count == j)
                    {
                        end = false;
                        break;
                    }
                    foreach (string files in Directory.GetFiles(folders))
                    {
                        if (files != string.Empty)
                        {
                            if (fileType.Length == 0)
                            {
                                temporaryDirectories.Add(files);
                            }
                            else
                            {

                                if (files.Contains(fileType))
                                {
                                    temporaryDirectories.Add(files);

                                }
                            }
                        }
                        else
                        {
                            break;
                        }
                    }

                }

                equals++;

                for (int i = j; i < temporaryDirectories.Count;)
                {
                    folders = temporaryDirectories[i];
                    j++;
                    break;
                }

            }
            catch (Exception ex)
            {
                errorList.Add(folders);

                for (int i = j; i < temporaryDirectories.Count;)
                {
                    folders = temporaryDirectories[i];
                    j++;
                    break;
                }
            }
        } while (end);
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X