【C言語】ファイルの作成日時・更新日時を取得する

この記事では、C言語を使用してファイルの作成日時と更新日時を取得する方法について解説します。

ファイルの作成日時や更新日時を取得するための具体的な手法を2つずつ紹介しますので、初心者の方でも簡単に理解できる内容となっています。

目次から探す

ファイルの作成日時を取得する方法

ファイルの作成日時を取得する方法には、主に2つの方法があります。

1つ目は、C言語の標準ライブラリであるstat関数を使用する方法です。

2つ目は、Windows APIを使用する方法です。

それぞれの方法について詳しく説明していきます。

方法1: stat関数を使用する

stat関数は、ファイルの情報を取得するための関数です。

この関数を使用することで、ファイルの作成日時を取得することができます。

以下に、stat関数を使用してファイルの作成日時を取得するサンプルコードを示します。

#include <stdio.h>
#include <sys/stat.h>
int main() {
    struct stat fileStat;
    const char* filename = "sample.txt";
    if (stat(filename, &fileStat) == 0) {
        printf("ファイルの作成日時: %s", ctime(&fileStat.st_ctime));
    } else {
        printf("ファイルが見つかりません\n");
    }
    return 0;
}
ファイルの作成日時: Sun Jun 25 18:09:25 2023

上記のコードでは、stat関数を使用してsample.txtというファイルの情報を取得しています。

stat関数の第1引数には、ファイル名を指定します。

第2引数には、ファイルの情報を格納するためのstruct stat型の変数のポインタを指定します。

stat関数の戻り値が0の場合、ファイルの情報が正常に取得できていることを意味します。

struct stat型のメンバst_ctimeには、ファイルの作成日時が格納されています。

ctime関数を使用して、作成日時を文字列として表示しています。

方法2: Windows APIを使用する

Windows環境でC言語を使用してファイルの作成日時を取得する場合、Windows APIを使用する方法があります。

以下に、Windows APIを使用してファイルの作成日時を取得するサンプルコードを示します。

#include <stdio.h>
#include <windows.h>
int main() {
    const char* filename = "sample.txt";
    FILETIME creationTime;
    SYSTEMTIME localTime;
    HANDLE hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile != INVALID_HANDLE_VALUE) {
        if (GetFileTime(hFile, &creationTime, NULL, NULL)) {
            FileTimeToLocalFileTime(&creationTime, &creationTime);
            FileTimeToSystemTime(&creationTime, &localTime);
            printf("ファイルの作成日時: %04d/%02d/%02d %02d:%02d:%02d\n", localTime.wYear, localTime.wMonth, localTime.wDay, localTime.wHour, localTime.wMinute, localTime.wSecond);
        } else {
            printf("ファイルの作成日時を取得できません\n");
        }
        CloseHandle(hFile);
    } else {
        printf("ファイルが見つかりません\n");
    }
    return 0;
}
ファイルの作成日時: 2023/06/25 18:09:25

上記のコードでは、CreateFile関数を使用してsample.txtというファイルを開いています。

GetFileTime関数を使用して、ファイルの作成日時を取得しています。

取得したファイルの作成日時は、FILETIME構造体で表されています。

FileTimeToLocalFileTime関数を使用して、ファイルの作成日時をローカル時間に変換し、FileTimeToSystemTime関数を使用して、ファイルの作成日時をSYSTEMTIME構造体に変換しています。

最後に、printf関数を使用して、作成日時を表示しています。

以上が、ファイルの作成日時を取得する方法についての説明です。

どちらの方法も、C言語でファイルの作成日時を取得する際に役立つものです。

1 2

この記事のページ一覧
  1. 現在のページ
目次から探す