Directory.GetFiles搜索模式

时间:2012-03-13 06:51:55

标签: asp.net search directory design-patterns getfiles

我有一个客户希望能够使用自动增量系统(NNN.fileextension)将文件保存到特定目录,其中上传的第一个文件以名称“001”开头,第二个文件以“002”等等。这一切都很好,但是,我很难理解如何能够循环遍历目录中的现有文件,并根据前面指定的文件名模式找到上传的最后一个文件。

如何遍历文件,确定文件是否具有“NNN”模式(N代表数字)并获取要上传的最后一个文件?

2 个答案:

答案 0 :(得分:0)

您可以按创建日期排序,然后选择第一个。

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

答案 1 :(得分:0)

您可以使用Directory.GetFiles(string, string)接受文件的搜索模式作为第二个参数(问号?充当单个字符占位符)。

因此,要找到最大ID,您应该遍历找到的文件,将文件名转换为整数值并选择最大值。

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