c++ builder XE4, 10.2 Tokyo > fileIO > コピー元ファイルがコピー先よりも更新されているかのチェック関数


動作確認
C++ Builder XE4
RAD Studio 10.2 Tokyo Update 2 (追記: 2018/01/09)

ファイルをコピーする処理において、コピー元がコピー先よりも新しいかどうかの確認をしたい時がある。

以下のように実装した。

#include <IOUtils.hpp> // for TDirectory.XXX
...
static bool isUpdated(String srcFile, String dstFile)
{
    TDateTime srcDt; // コピー元
    TDateTime dstDt; // コピー先

    if (FileExists(srcFile) == false) {
        return false;
    }
    if (FileExists(dstFile) == false) {
        return true;
    }

    FileAge(dstFile, dstDt);
    FileAge(srcFile, srcDt);

    return (srcDt > dstDt);
}

srcFileとdstFileにはそれぞれコピー元とコピー先のファイルパス(フォルダ付き)を指定する。

コピー元ファイルがなければfalse, コピー先がない(コピー対象)ならtrueとしている。

あとは FileAge()でタイムスタンプを取得し比較により判断。