フォルダ内のファイルの一覧が必要で、ファイルが変更された日付時刻でソートされています。ファイルが日付時刻の変更されたフォルダ内のファイルの一覧を取得する方法
LinuxでC++を使用していますが、Boostライブラリがサポートされています。
これを実装する方法のコードのサンプルを私に提供してもらえますか?
フォルダ内のファイルの一覧が必要で、ファイルが変更された日付時刻でソートされています。ファイルが日付時刻の変更されたフォルダ内のファイルの一覧を取得する方法
LinuxでC++を使用していますが、Boostライブラリがサポートされています。
これを実装する方法のコードのサンプルを私に提供してもらえますか?
ほとんどのオペレーティングシステムは、特定の順序でディレクトリエントリを返しません。それらを並べ替える場合は(人間のユーザに結果を表示する場合はおそらく)、別のパスでそれを行う必要があります。
namespace fs = boost::filesystem;
fs::path someDir("/path/to/somewhere");
fs::directory_iterator end_iter;
typedef std::multimap<std::time_t, fs::path> result_set_t;
result_set_t result_set;
if (fs::exists(someDir) && fs::is_directory(someDir))
{
for(fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter)
{
if (fs::is_regular_file(dir_iter->status()))
{
result_set.insert(result_set_t::value_type(fs::last_write_time(dir_iter->path()), *dir_iter));
}
}
}
あなたはその後、result_set
を反復処理することができ、およびマッピングされたboost::filesystem::path
エントリは昇順になります:あなたはそれを行うことが一つの方法は、std::multimap
にそのようなものをエントリを挿入することです。
ファイルが同じ秒で作成/変更された場合、 'std :: time_t'が2番目のものと正確であるため、それらの順序は保証されません。 – fduff
http://www.boost.org/doc/libs/1_46_1/libs/filesystem/v3/doc/reference.html#last_write_timeにご注意ください。 last_write_timeはパスではなくステータスを取得します。 fs :: last_write_time(dir_iter-> path()) – e271p314
result_set.insertに左括弧がありません... – daramarak
これは他の質問とどのように違うのですか?http://stackoverflow.com/questions/4279164/cboost-file-system-to-return-a-list-of-files-older-than-a-specific-時間? Nabulkeはあなたに正しい方向に向けるべき答えをあなたに提供しました。そこからファイルをベクトルに追加したり、並べ替えたりするのは難しくありません。 – Ralf
[C++:特定の時間より古いファイルのリストを返すためのファイルシステムの拡張]の可能な複製(https://stackoverflow.com/questions/4279164/cboost-file-system-to-return-a-list-of) -files-specific-than-a-specific-time) – halfer