我有一個客戶希望能夠使用自動增量系統將文件保存到特定目錄(NNN.fileextension),其中第一個上傳的文件以名稱「 001「,第二個」002「等等。然而,這一切都很好,我很難理解如何能夠遍歷目錄中的現有文件,並根據前面指定的文件名模式找到上傳的最後一個文件。Directory.GetFiles搜索模式
如何循環瀏覽文件,確定文件是否具有「NNN」模式(N表示數字)並獲取最後上傳的文件?
我有一個客戶希望能夠使用自動增量系統將文件保存到特定目錄(NNN.fileextension),其中第一個上傳的文件以名稱「 001「,第二個」002「等等。然而,這一切都很好,我很難理解如何能夠遍歷目錄中的現有文件,並根據前面指定的文件名模式找到上傳的最後一個文件。Directory.GetFiles搜索模式
如何循環瀏覽文件,確定文件是否具有「NNN」模式(N表示數字)並獲取最後上傳的文件?
你可以使用Directory.GetFiles(string, string)其接受文件作爲第二個參數搜索模式(問號?
作爲單個字符佔位符)。
因此,要查找最大id,您應該遍歷找到的文件,將文件名轉換爲整數值並選擇最大值。
var maxId = Directory.GetFiles("w:\\", "???.fileextension")
.Select(file => int.Parse(Path.GetFileNameWithoutExtension(file)))
.Max();
您可以按創建日期排序,然後取第一個。
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
但的確如此,可能會有一段時間自動遞增被關閉,如果文件名不是自動遞增文件之一呢? – mattgcon 2012-03-13 06:59:09
請在上面找到更新的答案。 – PraveenVenu 2012-03-13 07:20:36