Шаблон поиска Directory.GetFiles - PullRequest
0 голосов
/ 13 марта 2012

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

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

Ответы [ 2 ]

0 голосов
/ 13 марта 2012

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

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

var maxId = Directory.GetFiles("w:\\", "???.fileextension")
    .Select(file => int.Parse(Path.GetFileNameWithoutExtension(file)))
    .Max();
0 голосов
/ 13 марта 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
...