Как вывести каждый файл и папку в иерархию каталогов - PullRequest
1 голос
/ 24 августа 2011

Я ищу путь ко всем файлам, папкам и файлам в этих папках.

В качестве примера.

если у меня есть

- Root
+ file1
+ file2
-- Directory
-+ file1
-+ file2
---Directory
--+ file1
--+ file2

Iхотел бы иметь возможность выводить каждый из этих файлов в программе, чтобы он выглядел следующим образом:

root/file1
root/file2
root/Directory/file1
root/Directory/file2
root/Directory/Directory/file1
root/Directory/Directory/file2

В соответствии с иерархией папок.

Есть ли еще способ сделать это?

Спасибо

Ответы [ 4 ]

2 голосов
/ 24 августа 2011

Следующий пример делает именно то, что вы хотите: -

http://www.dotnetperls.com/recursively-find-files

1 голос
/ 24 августа 2011

Использование Linq для подъема

var di=new DirectoryInfo(folderPath);
var files=di.GetFiles("*",SearchOption.AllDirectories).Select(f=>f.FullName.Substring(di.FullName.Length+1));

пропустите подстроку, чтобы получить полный путь. Или, если вы просто хотите указать имя папки корневого объекта (например, если вы указали в качестве каталога c: \ users \ bob \ fish и просто хотите fish \ foldername, вы должны сделать следующее ..

var di=new DirectoryInfo(folderPath);
var basePath=Path.GetDirectoryName(folderPath);
var files=di.GetFiles("*",SearchOptions.AllDirectorys).Select(f=>f.FullName.Substring(basePth.Length+1));

если вы пометите дополнительный .Select(f=>f.Replate(@"\","/")) в конце оператора, вы можете использовать / в качестве разделителя пути вместо \

1 голос
/ 24 августа 2011

используйте класс DirectoryInfo, классы FileInfo внутри System.IO для получения этих сведений.

 public void PrintAllFiles()
    {
        DirectoryInfo obj = new DirectoryInfo("E:\\");
        foreach (var k in obj.GetFiles())
        {
            Console.WriteLine(k.FullName);
        }
    }
0 голосов
/ 24 августа 2011

вы можете использовать System.IO.Directory.GetFiles (.., .., System.IO.SearchOption.AllDirectories), который возвращает массив файлов и полные пути, а затем печатает этот массив.если вам нужна сортировка, вы можете рекурсивно перебирать каталоги и использовать System.IO.Directory.GetFiles (.., .., System.IO.SearchOption.TopDirectoryOnly) вместо каждого каталога.

...