#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 #, но я учусь благодаря вам, замечательные люди !!)