• ベストアンサー

ファイル更新日取得

C言語でファイルの更新日を取得する方法を教えてください。 VBの「FileDateTime」の様なものはございませんでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> C言語でファイルの更新日を取得する方法を教えてください。 標準的な方法は存在しません。 環境を特定するのであれば、(ファイルの更新日という概念があるのなら)普通は何らかの方法が存在するはずです。

その他の回答 (4)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答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/win112.html
  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

開いているファイルの情報を得る int _fstat( int fd, struct _stat *buffer ); パスで指定したファイルの情報を得る int _stat( const char *path, struct _stat *buffer );

  • yonfa
  • ベストアンサー率52% (22/42)
回答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;

kuisinbo_hanako
質問者

補足

すみません。 使い方がよくわかりませんでした。 教えていただけませんでしょうか?

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

OSは何でしょうか。又、使用されるC言語のコンパイラはなんでしょうか。それにより、回答も異なりますので、それを提示されると、良い回答が得られるかと思われます。

kuisinbo_hanako
質問者

補足

OSはWindows XP、コンパイラはC++です。

関連するQ&A

  • ファイルを更新した人を知りたい

    特定のフォルダにある特定のファイルを更新した人のログインIDを取得したいのですが、どうすればできるでしょうか。 ファイルを更新した日なら、FileDateTimeをつかっていますが、同じように、最終更新者を知ることはできないでしょうか。 ファイルは、Docuworks(富士ゼロックス)のファイルです。

  • VBAで取得した値を更新クエリーの値にしたい

    MS-Access2000を使っています。 下記の方法で、ファイルの最終保存日を取得しているのですが、その日時をクエリーを使ってデータベースに登録しようと考えています。 しかし、VBAで取得した値をどうやって、クエリーに反映させてよいか解りません。 すみませんが、方法を教えてください。よろしくお願い致します。 1:フォームに「Filename」というテキストボックスを作り、フルパスでファイル名を入力します。 2:VBAを起動して、内部で FileDateTime関数で日時を取得します。    jikan = FileDateTime(Filename) 3:更新クエリーを使って、この「jikan」の値を「T_main」テーブルの「時間」という項目に登録したいのです。 3番の方法が解りません。よろしくお願い致します。

  • ファイルの「作成日・更新日」の変更

    VBにて「ファイルの作成日付、最終変更日付」の 取得と変更を行いたいのですが やり方がわかりません。 MSDNを検索したのですが Visual C++ に GetStatus という物があり、ファイル ステータスを取得できるとあったのですが VBには、そのような物は、無いのでしょうか? やりたい事は、 既存の「A.txt」というのがある VBにて作成した「B.txt」というファイルある A.txtの作成日と更新日を読み込んで B.txtの作成日を変更したい といった具合です。 宜しくお願いします。

  • Excel:更新日時取得

    Excelでファイルの更新日時をセルに表示したいと思っています。 VBAのFileDateTimeで更新日時は取得する事はできますが、これだと実行した時にしか表示されません。 希望は、リアルで表示したいのです。 関数で更新日時が表示する事が出来ればいいのですが・・・・。 何か方法はあるのでしょうか。 わかる方、宜しくお願いします。

  • C++言語 更新ファイルからログ情報取得

    随時更新されるログファイルから、 linux のC++言語でログ情報を随時取得するプログラムをつくっています。 ログ情報は、毎秒更新されるので、更新されたログ情報だけを 取得したいのですが、どうすればよいでしょうか? ログをどこまでよみとったかを覚えておく方法はあるのでしょうか? よろしくおねがいします。  

  • ファイルの作成日時を取得するにはどうすれば?

    エクセル2003です。 ファイルの作成日時を取得するにはどうすればいいですか? MsgBox FileDateTime(ActiveWorkbook.FullName) を実行すると、更新日時が取得されてしまいます。 FileDateTime 関数のヘルプを見ると、 ----------------------------------- 指定したファイルの作成日時または 最後に修正した日時を示すバリアント型 (内部処理形式 Date の Variant) の値を返します。 ----------------------------------- と書かれていますが、 どうすれば作成日時を取得できるのでしょうか?

  • ファイル名と更新日を取得する。

    あるフォルダーのなかの保存ファイル名と更新日を取得して テキストファイルに書き出すソフトはありませんか?

  • ファイルの最終更新日をちがうページで取得したい

    ファイルAの最終更新日によって、ファイルBのページに「NEW」アイコンを表示・非表示にさせたいのですが…。 手動で行ってもいいのですが、面倒なので自動でやってみたいと試みているのです。可能でしょうか?? 私の考えでは、ファイルBのページでのファイルA最終更新日を取得し、日付で判断すれがいいのだとは思ったのですが。 SSIを使って、ファイルBのページでファイルAの最終更新日までは取得することができました。判断文をどうかいていいものか…。 もし、わかられる方がいらっしゃれば教えてくださいm(__)m

  • HP上のデータ取得に用いる使用言語について

    HP上のデータ取得に用いる使用言語について 具体的に為替証拠金取引の会社のHP上でリアルタイムで更新されるレートをテキストでログに落とすプログラムを作りたいと思っています。C++とかJavaとか、どんな言語でやればいいのでしょうか。一応自分はVB6/Vb2008でテキストファイルに入出力はできます。あとVB2008で簡単なクラスぐらいは作れます。よろしくお願いします。

  • ファイル作成者名の取得

    VBで、ファイルの作成者名・更新者名・作成日時・更新日時を取得する方法を探しています。 作成日時・更新日時の方はAPIを使用すれば可能だと分かったのですが、 作成者名・更新者名の取得方法が見つかりません。 取得が可能かどうかも含めて、教えていただけませんでしょうか? よろしくお願いします。

専門家に質問してみよう