2017-04-10 154 views
0

我需要根據日期順序檢索文件名。目前我正在使用FindFirstFiles函數來檢索文件。我按照字母順序(升序)獲取文件名,但是我想在文件數據的基礎上接收它。我們怎麼能做到這一點?如何使用FindFirstFiles獲取數據順序中的文件

+0

你是什麼意思與「文件數據的基礎 FindFirstFiles不以任何排序的順序返回文件: _ ..這可能是也可能不是出現在目錄中上市的第一個文件或目錄應用程序(如dir命令)給定相同的文件名字符串模式時,這是因爲FindFirstFile沒有對搜索結果進行排序.._ – mligor

+1

檢索文件,然後按照您的要求排序。 –

回答

3

FindFirstFile不以任何特定的順序檢索文件:

的功能用FindFirstFile打開一個搜索句柄並返回有關文件系統找到的第一個文件的信息[...]。當給定相同的文件名字符串模式時,這可能是也可能不是在目錄列表應用程序中出現的第一個文件或目錄(例如dir命令)。 這是因爲FindFirstFile不對搜索結果進行排序。

這是更明確地記載爲FindNextFile

在搜索返回的文件,如按字母順序排列的順序,不能保證,而且是依賴於文件系統上。如果必須對數據進行排序,則應用程序必須在獲得所有結果後執行排序。

因此,如果您需要排序列表,則需要在完成時對結果進行排序。 WIN32_FIND_DATA結構包含時間戳。一旦獲得結果,記錄它們並在相應的時間戳上執行std::sort


這是基於以下假設:「基於文件的數據」 是一個錯字,應該改成「文件日期」 代替。如果不是這種情況,則需要提供與std::sort不同的比較功能。

相關問題