文件大于2G的话,需要用64
_stat、_wstat、_stati64、_wstati64
ファイルの状態に関する情報を取得します。
int _stat( const char *path, struct _stat *buffer );
__int64 _stati64( const char *path, struct _stat *buffer );
int _wstat( const wchar_t *path, struct _stat *buffer );
__int64 _wstati64( const wchar_t *path, struct _stat *buffer );
関数 | 必要なヘッダー | オプション ヘッダー | 互換性 |
_stat | <sys/types.h> に続けて<sys/stat.h> | <errno.h> | Win 95, Win NT |
_wstat | <sys/types.h> に続けて <sys/stat.h> または <wchar.h> | <errno.h> | Win NT |
_stati64 | <sys/types.h> に続けて<sys/stat.h> | <errno.h> | Win 95, Win NT |
_wstati64 | <sys/types.h> に続けて<sys/stat.h> または <wchar.h> | <errno.h> | Win NT |
互換性の詳細については、「はじめに」の「互換性」を参照してください。
ライブラリ
LIBC.LIB | シングルスレッド スタティック ライブラリ、リテール版 |
LIBCMT.LIB | マルチスレッド スタティック ライブラリ、リテール版 |
MSVCRT.LIB | MSVCRT.DLL 用インポート ライブラリ、リテール版 |
戻り値
ファイルの状態に関する情報が取得できると 0 を返します。エラーが発生すると -1 を返し、グローバル変数 errno に ENOENT を設定して、ファイル名またはパス名が見つからなかったことを示します。
引数
path
既存のファイルのパス名
buffer
結果を格納する構造体へのポインタ
解説
_stat 関数は、path で指定したファイルまたはディレクトリに関するステータス情報を取得して、その情報を buffer が指す構造体に格納します。_stat 関数は、現在使用中のマルチバイト文字のコード ページに従って、マルチバイト文字の並びを認識して、マルチバイト文字列引数を自動的に正しく処理します。
_wstat 関数は、_stat 関数のワイド文字バージョンであり、path 引数はワイド文字列です。_wstat 関数は、マルチバイト文字列を処理しない点以外は、_stat 関数と同じです。
汎用テキスト ルーチン マッピング
TCHAR.H ルーチン | _UNICODE と _MBCS が定義されていない | _MBCS が定義されている | _UNICODE が定義されている |
_tstat | _stat | _stat | _wstat |
_tstati64 | _stati64 | _stati64 | _wstati64 |
_stat 構造体は SYS/STAT.H 中に定義されていて、以下のメンバを持ちます。
st_gid
ファイルを所有するグループを識別する数値 (UNIX 固有)。NT システムでは、このフィールドは常に 0 になります。リダイレクトされるファイルは、NT ファイルに分類されます。
st_atime
ファイルが最後にアクセスされた時刻
st_ctime
ファイルが生成された時刻
st_dev
ファイルが入っているディスクのドライブ番号 (st_rdev と同じ)
st_ino
ファイルの情報ノード番号 (inode、UNIX固有)。UNIX ファイル システムでは、inode は、ファイルの更新時刻、アクセス権、および内容を記述します。ハード リンクされたファイルは同じ inode を共有します。inode と st_ino は、FAT、HPFS、NTFS の各ファイル システムでは意味を持ちません。
st_mode
ファイル モード情報のビット マスク。path でディレクトリを指定すると、_S_IFDIR ビットが設定されます。path で通常のファイルまたはデバイスを指定すると、_S_IFREG ビットが設定されます。ユーザー読み出し/書き込みビットは、ファイルのアクセス権に従って設定されます。ユーザー実行ビットは、拡張子に従って設定されます。
st_mtime
ファイルが最後に変更された時刻
st_nlink
NTFS 以外のファイル システムでは常に 1
st_rdev
ファイルが入っているディスクのドライブ番号 (st_devと同じ)
st_size
バイト単位 (_stati64 と _wstati64 では 64 ビット整数) で表したファイルのサイズ
st_uid
ファイルを所有するユーザーの識別番号 (UNIX固有)。NT システムでは、このフィールドは常に 0 になります。リダイレクトされるファイルは、NT ファイルに分類されます。
path がデバイスを指す場合は、_stat 構造体のサイズ フィールド、タイム フィールド、st_dev フィールド、st_rdev フィールドは無意味です。また、STAT.H では TYPES.H で定義されている _dev_t 型が使われているので、インクルードしてください。
プログラム例
/* STAT.C: _stat 関数を使って、ファイル STAT.C についての
* 情報をレポートします。
*/
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
void main( void )
{
struct _stat buf;
int result;
char buffer[] = "A line to output";
/* "stat.c" に関連付けられているデータを取得します。 */
result = _stat( "stat.c", &buf );
/* ファイル状態情報が取得できたかのチェック */
if( result != 0 )
perror( "ファイルの情報を取得できませんでした" );
else
{
/* 統計情報の一部を表示 */
printf( "ファイルの大きさ : %ld/n", buf.st_size );
printf( "ドライブ : %c:/n", buf.st_dev + 'A' );
printf( "更新時刻 : %s", ctime( &buf.st_atime ) );
}
}
出力
ファイルの大きさ : 764
ドライブ : C:
更新時刻 : Sun Oct 29 18:11:50 1995