Как я могу вернуть каталоги файлов / папок без указания пути к каталогу? - PullRequest
3 голосов
/ 24 февраля 2012

Я пытаюсь извлечь список файлов в папке и в настоящее время использую:

 string[] files = Directory.GetFiles(txtbxNewFolder.Text);

Но это возвращает такие вещи, как "C: \ Users \ Dahlia \ Desktop \ New Folder \ jerry.txt". Есть ли способ вернуть только "jerry.txt", или мне нужно сделать какое-то разделение строк массива?

Я также пытаюсь вернуть список папок в каталоге и в настоящее время использую:

string[] folders = Directory.GetDirectories(txtbxOldFolder.Text);

Но это возвращает такие вещи, как "C: \ Users \ Dahlia \ Desktop \ New Folder \ folder1". Есть ли способ вернуть только "folder1", или мне нужно сделать какое-то разделение строк массива?

Ответы [ 3 ]

12 голосов
/ 24 февраля 2012

Используя LINQ, вы можете получить список только файлов:

Directory.GetFiles(txtbxNewFolder.Text).Select(f => Path.GetFileName(f));

Хотя вместо GetFiles я бы, вероятно, использовал:

Directory.EnumerateFiles(txtbxNewFolder.Text).Select(f => Path.GetFileName(f));

Это не такпросто получить имя каталога, но это должно работать (не проверено):

Directory.GetDirectories(txtbxOldFolder.Text)
    .Select(d => new DirectoryInfo(d).Name);

Аналогично, есть:

Directory.EnumerateDirectories(txtbxOldFolder.Text)
    .Select(d => new DirectoryInfo(d).Name);
3 голосов
/ 24 февраля 2012

Вы можете использовать Path.GetFileName и LINQ

например:.

string[] files = Directory.GetFiles(txtbxNewFolder.Text)
                          .Select(f => Path.GetFileName(s))
                          .ToArray();
1 голос
/ 24 февраля 2012

Посмотрите на классы FileInfo и DirectoryInfo.

Вы можете сделать:

foreach (String file in files) {
    var fi = new FileInfo(file);
    Console.Out.WriteLine(fi.Name);
}

Аналогично для DirectoryInfo.

...