2014-02-20 2 views
0

Я хочу найти каталог и получить список всех файлов jpg. Код, который у меня есть следующие:Как искать только файлы jpg в каталоге с помощью C#

string[] fileList = Directory.Exists(this._imageDirectory) 
              ? Directory.GetFiles(this._imageDirectory, "*.jpg") 
              : null; 

Это работает хорошо, если у меня есть такие файлы, как показано ниже:

1.jpg 
2.jpg 
3.txt 

в вышеописанном случае он находит только два файла. Но если у меня есть следующие файлы:

1.jpg 
2.jpg 
3.jpg_tmp 

найдено 3 файла. Он находит 3.jpg_tmp, который он не должен найти.

Как я могу исправить это, не заглядывая в список файлов и находить те, которые не верны?

ответ

2

взгляд на this выписке из MSDN

Когда расширение ровно три символа, GetFiles возвратит все расширения, которые соответствуют и что начинается с, что 3 расширением буквы.

Так, *.jpg будет соответствовать hello.jpg, hello.jpger, hello.jpgworld

Insted использование hello?.jpg, который будет соответствовать hello.jpg точно.


Чтобы решить проблему, вы можете использовать EndsWith строковый метод, как сделать below

+0

Это не работает. Он не возвращает файл вообще. – mans

0

Вы можете отфильтровать список с помощью LINQ:

var pictures = fileList != null ? 
     fileList.Where(name => name.EndsWith(".jpg")).ToArray() : 
     Enumerable.Empty<string>().ToArray(); 
0

.jpg будет возвращать только файлы с одного символа? перед ".". Необходимо сделать так, как user2720372 предлагает и фильтрует список.

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