C# - как проверить, все ли файлы в папке имеют определенное расширение

Мне нужно проверить, все ли файлы в папке имеют определенное расширение. Я пытаюсь отобразить сообщение / форму, если все файлы в папке имеют расширение .txt. Может ли кто-нибудь предоставить код о том, как это можно сделать? Спасибо.

нет, это не сервис написания кода. перечислить все (например, Directory.GetFiles) и прервать работу при первом появлении Path.GetExtension(file) != ".txt".

Cee McSharpface 26.10.2018 07:44

Прочтите все имена файлов, если они не совпадают, покажите сообщение об ошибке. С какой частью этого у вас проблемы? Поскольку Stack Overflow не является службой «напишите этот код для меня», вы должны найти информацию для этих частей в своей любимой поисковой системе, а когда вы попытаетесь ее реализовать, вы можете попросить помощи для решения конкретной проблемы.

Sami Kuhmonen 26.10.2018 07:45

Я никогда не говорил, просто дай мне код? Я тоже пытаюсь учиться. Не волнуйся, лол

Thomas Khuns 28.10.2018 21:55
4
3
385
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

public bool DoAllFilesHaveExtension(string path, string extension)
{
   return Directory.GetFiles(path).All(x => string.Compare(Path.GetExtension(x),extension, StringComparison.CurrentCultureIgnoreCase) == 0);
}

Примечание, без проверки ошибок, работоспособности или отказоустойчивости


Дополнительные ресурсы

Directory.GetFiles (string) Метод

Returns the names of files (including their paths) in the specified directory.

Enumerable.All (IEnumerable, Func) Метод

Determines whether all elements of a sequence satisfy a condition.

Метод Path.GetExtension

Returns the extension of the specified path string.

String.Compare Метод

Compares two specified String objects and returns an integer that indicates their relative position in the sort order.

Проголосуйте за меня, но чувствительность к регистру может быть проблемой при этом сравнении.

Richardissimo 26.10.2018 08:27

также проголосовали за, но один вопрос в части расширения: а что, если я хочу проверить несколько расширений, таких как .jpg, .jpeg и .png ?? это позволяет несколько?

keinz 20.05.2020 07:26

TheGeneral solution are fine than this but i am just showing u another beginner level way

if (fileupload.HasFile)
     {
       if (CheckFileType(fileupload.FileName))
          {
            //it will come here if file extention will math your CheckFileType
          {
    }

Здесь вы можете определить тип, который хотите проверить

bool CheckFileType(string fileName)
        {
            string ext = Path.GetExtension(fileName);
            switch (ext.ToLower())
            {                    
                case ".txt":
                    return true;                          
                default:
                    return false;
            }
        }

Это не отвечает на заданный вопрос.

Richardissimo 26.10.2018 08:28

Другие вопросы по теме