特定のファイルの素材を取得したい

ファイルのサイズを知りたいケースがたまにあります。
決して難しい処理ではありませんが、サブルーチン化しておくと便利です。
なお、この関数は2G以上のファイルのサイズを取ってこれるように、戻り値が「__int64」型になっています。

__int64 __fastcall subGetFileSize(AnsiString strFPATH)
{
    //    指定ファイルのサイズを取得する
    __int64 iFSIZE;
    char cPATH[MAX_PATH];
    WIN32_FIND_DATA fdDAT;
    HANDLE hFILE;

    try    {
        //    ファイルパスをコピー
        strcpy(cPATH, strFPATH.c_str());

        //    ファイル情報を取得
        hFILE = ::FindFirstFile(cPATH, &fdDAT);

        //    サイズを求める
        iFSIZE = fdDAT.nFileSizeHigh;
        iFSIZE = iFSIZE << 32;
        iFSIZE += fdDAT.nFileSizeLow;

        //    ファイルを閉じる
        if (!::FindClose(hFILE))    {
            throw ("Error");
        }
    }
    catch(...)    {
        //    エラーなら-1を返す
        return -1;
    }

    return iFSIZE;
}

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-12-09 (日) 22:30:52 (3004d)