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

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

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


person mattgcon    schedule 13.03.2012    source источник


Ответы (2)


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

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

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

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

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
person PraveenVenu    schedule 13.03.2012
comment
Это правда, однако может быть время, когда автоматическое увеличение отключено, и что, если имя файла не является одним из файлов автоматического увеличения? - person mattgcon; 13.03.2012