トップC-Tips > ファイルのタイプスタンプを変更する

ファイルのタイプスタンプを変更する

ファイル情報として、作成時刻、修正時刻、アクセス時刻がある。 これらのタイムスタンプ情報をプログラムで変更する。

1.utime関数を使う

ヘッダファイルutime.hに次のutimbuf構造体が定義されている。

struct utimbuf {
	time_t	actime;
	time_t	modtime;
};

次のプログラムでは、アクセス時間と更新時間に現在時刻をセットして、 utime関数をコールしている。 これにより、ファイルのタイムスタンプが現在時刻に変更される。

エクスプローラで"c:/mh/mcc/data/timestamp.dat"のプロパティを見ると、 作成時間は不変で、アクセス時間と更新時間が現在時刻に更新されたことを確認できる。

2.Win32 APIのSetFileTime関数を使う方法

次のプログラムでは、まず、 GetSystemTime関数で現在時刻を得て、それを SystemTimeToFileTime関数で FILETIME に変更している。

次に、CreateFile関数でファイルをオープンする。 単に既存ファイルをオープンする場合も、CreateFile関数を使用する。

次に、SetFileTime関数で三つのタイムスタンプを変更している。

確認は標準C言語ライブラリ関数の方が楽そうだったので、 このプログラムではそうした。 もちろん、エクスプローラで確認できる。