2013-07-10 4 views
1

Я хочу вернуть файлы, являющиеся изображениями, внутри определенного каталога. Я хочу создать путь изображения, подобный этомуDirectory.GetFiles() возвращает полный путь

string[] ImageNames = Directory.GetFiles(path); 


     string tds=""; 
     for (int i = 0; i < ImageNames.Length; i++) 
     { 
      tds += "<tr> <td> <img href=/Articles/ArticleImageStore/'" + ImageNames[i] + "' width='64' height='64'></img></tr> </td>"; 
     } 

, но он возвращает физический путь к файлу на диске. Как мне это сделать?

ответ

4

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

string[] ImageNames = Directory.GetFiles(path) 
            .Select(p => Path.GetFileName(p)).ToArray(); 

Это создаст список только с именами файлов.

+0

он возвращает один файл. –

+0

@SpiralsWhirls возвращает массив файлов. Если у этого массива есть только один элемент, это потому, что был только 1 файл. – evanmcdonnal

+0

@SpiralsWhirls: глупый вопрос: есть ли у вас более одного файла в этом каталоге? Если да, то находятся ли они в подкаталогах? –

3

Вместо использования класса Directory я бы использовал DirectoryInfo, тогда вы можете это сделать;

string[] fNames = new DirectoryInfo(dirPath).GetFiles("*.png").Select(x => x.FileName).ToArray(); 

Версия GetFiles DirectoryInfo возвращает FileInfo объекты, а не пути к файлам, как строки, так что вы можете сделать гораздо больше с результатами. У меня, случается, есть выбор, который сводит к нулю, просто проецируя FileName для каждого экземпляра FileInfo, возвращаемого GetFiles, но если вам нужно сделать больше с файлами, которые вы могли бы удалить, а затем перебрать объекты FileInfo.

Кроме того, я использую перегрузку с шаблоном, который позволит легко игнорировать ваши файлы без изображения.

DirectoryInfo docs; http://msdn.microsoft.com/en-us/library/8he88b63.aspx

+0

Спасибо @evanmcdonnal –

+0

Мне нужно изучить это сейчас .. Спасибо. Очень полезно. –

Смежные вопросы