Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Шаблон поиска Directory.GetFiles

Автор вопроса: mattgconОтветов: 2

У меня есть клиент, который хочет иметь возможность сохранять файлы в определенный каталог с системой автоматического увеличения (NNN.fileextension), где первый загруженный файл начинается с имени "001", второй "002" и так далее. Это все хорошо, однако я не понимаю, как перебрать существующие файлы в каталоге и найти последний загруженный файл на основе шаблона имени файла, указанного ранее.

Как я могу просмотреть файлы, определить, имеет ли файл шаблон "NNN" (N представляет числовое значение), и получить последний загружаемый файл?

searchdesign-patternsdirectorygetfiles

Ответы

Ответ 1 · Alex

Вы можете использовать Directory.GetFiles(string, string), который принимает поиск шаблон для файлов в качестве второго аргумента (вопросительный знак ? выступает в качестве заполнителя для одного символа).

Таким образом, чтобы найти максимальный идентификатор, вы должны перебрать найденные файлы, преобразовать имя файла в целочисленное значение и выбрать максимальное значение.

var maxId = Directory.GetFiles("w:\\", "???.fileextension")
    .Select(file => int.Parse(Path.GetFileNameWithoutExtension(file)))
    .Max();

Ответ 2 · PraveenVenu

Можно заказать по дате создания и потом взять первый.

int maxFileId = 0;
        foreach (string file in Directory.GetFiles("c:\\"))
        {
            try
            {
                string currentFile = System.IO.Path.GetFileName(file).Replace("." + System.IO.Path.GetExtension(file), "");
                if (int.Parse(currentFile) > maxFileId)
                    maxFileId = int.Parse(currentFile);
            }
            catch
            {
            }
        }
        //maxFileId will give the last file

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы