Каталог.GetFilesNameWithoutExtension() Массив

#c# #arrays #file #directory

#c# #массивы #файл #каталог

Вопрос:

У меня есть несколько файлов в папке. Я хочу, чтобы имена файлов (без их расширений) в Array . Возможно ли получить весь список файлов таким образом? Ближе всего я подошел к Directory.GetFiles("FolderName") тому, который возвращает массив "FolderNameFileName.Extensions" . Возможно ли иметь массив только "FileName" для каждого файла? Проблема в Path.GetFileNameWithoutExtension() том, что он возвращает его только для одного файла.

(Примечание: я ищу более элегантный способ, чем String.Split() или String.SubString() )

Это какой каталог.GetFiles() предоставляет:

 {"FolderNameFile1.ext", "FolderNameFile2.ext"}
 

Это то, что я хочу (элегантно):

 {"File1", "File2"}
 

Ответ №1:

Я предполагаю, что вы ищете Path.GetFileNameWithoutExtension метод:

 var filenames = Directory.EnumerateFiles("FolderName")
                         .Select(Path.GetFileNameWithoutExtension)
                         .ToArray();
 

Редактировать: если вы хотите узнать об Select операторе, вам следует изучить LINQ, который является отличным инструментом для повышения производительности в .NET. Вышеуказанное может быть эквивалентно выражено как:

 var filenames = Directory.GetFiles("FolderName");
for (int i = 0; i < filenames.Length;   i)
    filenames[i] = Path.GetFileNameWithoutExtension(filenames[i]);
 

Комментарии:

1. Эта строка кода — именно то, что я пытался сделать. Спасибо! (Я знал о Path.GetFileNameWithoutExtension(), но не знал о методе EnumerateFiles() или методе Select(), который вы показали здесь. Все еще новичок в C #, но я учусь благодаря вам, замечательные люди !!)