![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
> C言語でファイルの更新日を取得する方法を教えてください。
標準的な方法は存在しません。
環境を特定するのであれば、(ファイルの更新日という概念があるのなら)普通は何らかの方法が存在するはずです。
No.5
- 回答日時:
★Win32 API なら『GetFileTime』って関数がありますよ。
・C言語ではファイルの更新日を取得する標準関数はありません。
・取得する方法はいくつかありますが、結構めんどうですね。
・そこで、Win32 API で良ければ『GetFileTime』での取得方法を紹介します。
●サンプル
/* このファイルで使用する関数 */
#define FuncLoadFile(s,a) CreateFile((LPCTSTR)(s),(GENERIC_READ|GENERIC_WRITE),(FILE_SHARE_READ|FILE_SHARE_WRITE),NULL,OPEN_EXISTING,a,NULL)
/* 更新日時を取得する関数 */
static BOOL MyFileDateTime( LPSYSTEMTIME lpDate, LPCTSTR lpFileName )
{
FILETIME ftDate;
FILETIME lcDate;
HANDLE hFile;
if ( (hFile = FuncLoadFile(lpFileName,FILE_ATTRIBUTE_NORMAL)) != INVALID_HANDLE_VALUE ){
// GetFileTime( hFile, &ftDate, NULL, NULL ); ←作成日時のとき
// GetFileTime( hFile, NULL, &ftDate, NULL ); ←最終アクセス日時のとき
GetFileTime( hFile, NULL, NULL, &ftDate ); ←更新日時のとき
FileTimeToLocalFileTime( &ftDate, &lcDate ); ←世界標準時(UTC)からローカル時間に変換
FileTimeToSystemTime( &lcDate, lpDate ); ←システム時刻形式に変換
CloseHandle( hFile );
return( TRUE ); ←正常に取得できた。
}
return( FALSE ); ←エラー(ファイルが見つからないなど)
}
●使い方
SYSTEMTIME stDate;
if ( MyFileDateTime(&stDate,"abc.txt") ){
printf( "日付は %04d/%02d/%02d\n", stDate.wYear, stDate.wMonth, stDate.wDay );
printf( "曜日は %d\n", stDate.wDayOfWeek );
printf( "時刻は %04d:%02d:%02d\n", stDate.wHour, stDate.wMinute, stDate.wSecond );
}
・詳しい説明はここでは省略しますので下の『参考URL』をどうぞ。
参考URL:http://wisdom.sakura.ne.jp/system/winapi/win32/w …
No.4
- 回答日時:
開いているファイルの情報を得る
int _fstat( int fd, struct _stat *buffer );
パスで指定したファイルの情報を得る
int _stat( const char *path, struct _stat *buffer );
No.3
- 回答日時:
MSWindowsであれば
GetFilseTime()かFindFirstFile()あたりを使うんでしょうかねぇ。
BOOL GetFileTime(
HANDLE hFile, // ファイルのハンドル
LPFILETIME lpCreationTime, // 作成日時
LPFILETIME lpLastAccessTime, // 最終アクセス日時
LPFILETIME lpLastWriteTime // 最終更新日時
);
こっちは情報量多すぎか。。。
HANDLE FindFirstFile(
LPCTSTR lpFileName, // ファイル名
LPWIN32_FIND_DATA lpFindFileData // データバッファ
);
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[MAX_PATH];
TCHAR cAlternateFileName[14];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA, *LPWIN32_FIND_DATA;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) Excel VBA リンク更新について A、B、Cのファイルかあります。 (Aファイルのリンク元Bフ 1 2022/09/21 13:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/02 11:48
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 12:54
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- Excel(エクセル) フォルダAから1つのファイルだけを、フォルダBへを移動するVBAについて 2 2022/07/25 11:45
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLテキストリンクでExcelファ...
-
【Excel VBA】取り込んだファイ...
-
0バイトのテキストファイル
-
Javaのファイルダウンロードに...
-
Eclipseで検索ができなくなった
-
【VBA】印刷マクロのループ処理...
-
GetOpenFileName()について
-
vbaの構文の修正相談(xmlファ...
-
VBS ファイルマージ処理
-
VB2008 iniファイルの全セクシ...
-
VBAでファイルOPEN ダイアログ...
-
ActiveXとそれに代わるもの
-
2GB以上のファイルを扱う方法
-
エディットボックスの内容をテ...
-
ファイル作成日時と更新日時を...
-
C#で作成したプログラムのA...
-
ファイルの排他について
-
ファイルが使用中か調べたい (...
-
VBAで、JPG写真の撮影日時を読...
-
XMLShemaからXML文書を作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】取り込んだファイ...
-
0バイトのテキストファイル
-
VBAで、JPG写真の撮影日時を読...
-
HTMLテキストリンクでExcelファ...
-
Eclipseで検索ができなくなった
-
HTMLまたはJavaScriptでフ...
-
【VBA】複数CSVの特定範囲を1つ...
-
ディレクトリのサイズの取得
-
サイトマップにサブドメインを...
-
Javaのファイルダウンロードに...
-
リソースファイルを認識してく...
-
VBS ファイルマージ処理
-
C++.NET 2003 「空のドキュメ...
-
VB6.0のメモリリークについて
-
C++によるファイル送受信プログ...
-
RPGでメッセージファイル利用
-
Perlで2GBを超える大きいファイ...
-
VB6でTIFF図のプロパティを...
-
BASP21のファイルアップロード...
-
VB2008 iniファイルの全セクシ...
おすすめ情報