あるディレクトリにあるファイルを日付(格納日時、アクセス日時等)で昇順に取り出したい。
どうすればよいか教えてください。
FindFileでファイルを取得するのは可能ですが、日付順にファイルを取り出したいのです。
一旦配列か何かに取り出しておいて、日付でソートすれば。
dir /B | sortの出力をパイプでもらうとか...
> 一旦配列か何かに取り出しておいて、日付でソートすれば。
// std::multimap でやってみた。
#include <windows.h>
#include <iostream>
#include <map>
#include <utility>
#include <string>
typedef std::multimap<FILETIME,std::string> map_type;
inline bool operator<(const FILETIME& x, const FILETIME& y) {
return CompareFileTime(&x,&y) < 0L;
}
int main() {
map_type files;
WIN32_FIND_DATA find_data;
HANDLE handle = FindFirstFile(*.*, &find_data);
if ( handle != INVALID_HANDLE_VALUE) {
do {
files.insert(map_type::value_type(
find_data.ftLastWriteTime, find_data.cFileName));
} while ( FindNextFile( handle, &find_data) );
FindClose(handle);
}
for ( map_type::iterator iter = files.begin();
iter != files.end(); ++iter ) {
std::cout << iter->second << std::endl;
}
return 0;
}