_stat
, _stat32
, _stat64
, _stati64
, _stat32i64
, _stat64i32
, _wstat
, _wstat32
, _wstat64
, _wstati64
, _wstat32i64
, _wstat64i32
ファイルのステータス情報を取得します。
構文
int _stat(
const char *path,
struct _stat *buffer
);
int _stat32(
const char *path,
struct __stat32 *buffer
);
int _stat64(
const char *path,
struct __stat64 *buffer
);
int _stati64(
const char *path,
struct _stati64 *buffer
);
int _stat32i64(
const char *path,
struct _stat32i64 *buffer
);
int _stat64i32(
const char *path,
struct _stat64i32 *buffer
);
int _wstat(
const wchar_t *path,
struct _stat *buffer
);
int _wstat32(
const wchar_t *path,
struct __stat32 *buffer
);
int _wstat64(
const wchar_t *path,
struct __stat64 *buffer
);
int _wstati64(
const wchar_t *path,
struct _stati64 *buffer
);
int _wstat32i64(
const wchar_t *path,
struct _stat32i64 *buffer
);
int _wstat64i32(
const wchar_t *path,
struct _stat64i32 *buffer
);
パラメーター
path
既存のファイルやディレクトリのパスを含む文字列へのポインター。
buffer
結果を格納する構造体へのポインター。
戻り値
これらの各関数は、ファイルのステータス情報が取得されると、0 を返します。 戻り値 -1 はエラーを示し、その場合 errno
は に ENOENT
設定され、ファイル名またはパスが見つからなかったことを示します。 EINVAL
という戻り値は、無効なパラメーターを示します。この場合も errno
は EINVAL
に設定されます。
リターン コードの詳細については、「errno
、_doserrno
、_sys_errlist
、および _sys_nerr
」を参照してください。
ファイルの日付スタンプは、1970 年 1 月 1 日午前 0 時より後、UTC の 3000 年 12 月 31 日 23:59:59 より前の場合 _stat32
に表すことができます。ただし、 または _wstat32
を定義 _USE_32BIT_TIME_T
していない限り、日付は 2038 年 1 月 18 日 23:59:59 までしか表されません。
解説
_stat
関数は、 path
によって指定されるファイルやディレクトリに関する情報を取得し、 buffer
によって示される構造体にそれを格納します。 _stat
は、マルチバイト文字列引数を自動的に適切に処理し、現在使用しているマルチバイト コード ページに従ってマルチバイト文字シーケンスを認識します。
_wstat
関数は、_stat
関数のワイド文字バージョンです。path
関数の引数 _wstat
は、ワイド文字列です。 _wstat
がマルチバイト文字列を処理しない点を除き、_wstat
と _stat
の動作は同じです。
これらの関数のバリエーションでは、32 ビットまたは 64 ビットの時刻型、および 32 ビットまたは 64 ビットのファイル長がサポートされます。 最初の数字のサフィックス (32
または 64
) は、使用される時刻型のサイズを示します。2 番目のサフィックスは i32
または i64
で、ファイル サイズが 32 ビットの整数として表されるか、それとも 64 ビットの整数として表されるかを示します。
_stat
は と同等 _stat64i32
であり struct _stat
、定義されていない限り _USE_32BIT_TIME_T
、64 ビット時刻が含まれます。その場合、古い動作は有効 _stat
です。32 ビット時刻を使用し struct _stat
、32 ビット時刻が含まれます。 同じことが _stati64
にも当てはまります。
Note
_wstat
は、Windows Vista のシンボリック リンクでは機能しません。 この場合、 _wstat
は常に、ファイル サイズとして 0 を報告します。 _stat
は、シンボリック リンクで正しく機能します。
この関数は、パラメーターを検証します。 または が の場合はNULL
、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。buffer
path
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「 CRT のグローバル状態」を参照してください。
時間の種類とファイルの長さの種類のバリエーション _stat
関数 | _USE_32BIT_TIME_T が定義されている |
時刻型 | ファイル長型 |
---|---|---|---|
_stat , _wstat |
未定義 | 64 ビット | 32 ビット |
_stat , _wstat |
定義済み | 32 ビット | 32 ビット |
_stat32 , _wstat32 |
マクロ定義の影響を受けない | 32 ビット | 32 ビット |
_stat64 , _wstat64 |
マクロ定義の影響を受けない | 64 ビット | 64 ビット |
_stati64 , _wstati64 |
未定義 | 64 ビット | 64 ビット |
_stati64 , _wstati64 |
定義済み | 32 ビット | 64 ビット |
_stat32i64 , _wstat32i64 |
マクロ定義の影響を受けない | 32 ビット | 64 ビット |
_stat64i32 , _wstat64i32 |
マクロ定義の影響を受けない | 64 ビット | 32 ビット |
汎用テキスト ルーチンのマップ
TCHAR.H ルーチン |
_UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
_stat
構造体 (SYS\STAT.H
で定義される) には、次のフィールドが含まれています。
フィールド | 説明 |
---|---|
st_gid |
ファイル (UNIX 固有) を所有するグループの数値 ID。Windows システムでは、このフィールドは常に 0 になります。 リダイレクトされたファイルは、Windows ファイルとして分類されます。 |
st_atime |
ファイルに最後にアクセスした時刻。 NTFS では有効ですが、FAT 形式のディスク ドライブでは無効です。 |
st_ctime |
ファイルの作成時刻。 NTFS では有効ですが、FAT 形式のディスク ドライブでは無効です。 |
st_dev |
ファイルを含むディスクのドライブ番号 ( st_rdev と同じ)。 |
st_ino |
ファイル (UNIX 固有) の情報ノードの数 ( inode )。 UNIX ファイル システムでは、 inode は、ファイルの日時スタンプ、アクセス許可、コンテンツを記述します。 ファイルが互いにハードリンクされている場合、同じ inode を共有します。 inode 、そして必然的に st_ino は、FAT、HPFS、または NTFS ファイル システムでは意味がありません。 |
st_mode |
ファイル モード情報のビット マスク。 _S_IFDIR がディレクトリを指定する場合、 path ビットが設定されます。 _S_IFREG が通常のファイルまたはデバイスを指定する場合、 path ビットが設定されます。 ユーザーの読み取り/書き込みビットは、ファイルのアクセス許可モードに応じて設定されます。ユーザー実行ビットは、ファイル名の拡張子に応じて設定されます。 |
st_mtime |
ファイルの最終変更時刻。 |
st_nlink |
非 NTFS ファイル システムでは常に 1 です。 |
st_rdev |
ファイルを含むディスクのドライブ番号 ( st_dev と同じ)。 |
st_size |
ファイルのサイズ (バイト単位)。i64 サフィックスを持つバリエーションの場合は 64 ビットの整数。 |
st_uid |
ファイルを所有するユーザーの数値識別子 (UNIX 固有)。 Windows システムでは、このフィールドは常に 0 です。 リダイレクトされたファイルは、Windows ファイルとして分類されます。 |
path
がデバイスを参照する場合、 st_size
構造体における st_dev
、各種時刻フィールド、 st_rdev
、 _stat
フィールドには、意味がありません。 STAT.H
は TYPES.H
で定義される _dev_t
型を使用するため、コード内で STAT.H
の前に TYPES.H
をインクルードする必要があります。
必要条件
ルーチンによって返される値 | 必須ヘッダー | 省略可能なヘッダー |
---|---|---|
_stat , _stat32 , _stat64 , _stati64 , _stat32i64 , _stat64i32 |
<sys/types.h> 、その後で <sys/stat.h> |
<errno.h> |
_wstat , _wstat32 , _wstat64 , _wstati64 , _wstat32i64 , _wstat64i32 |
<sys/types.h> 、その後に <sys/stat.h> または <wchar.h> |
<errno.h> |
互換性について詳しくは、「 Compatibility」をご覧ください。
例
// crt_stat.c
// This program uses the _stat function to
// report information about the file named crt_stat.c.
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
int main( void )
{
struct _stat buf;
int result;
char timebuf[26];
char* filename = "crt_stat.c";
errno_t err;
// Get data associated with "crt_stat.c":
result = _stat( filename, &buf );
// Check if statistics are valid:
if( result != 0 )
{
perror( "Problem getting information" );
switch (errno)
{
case ENOENT:
printf("File %s not found.\n", filename);
break;
case EINVAL:
printf("Invalid parameter to _stat.\n");
break;
default:
/* Should never be reached. */
printf("Unexpected error in _stat.\n");
}
}
else
{
// Output some of the statistics:
printf( "File size : %ld\n", buf.st_size );
printf( "Drive : %c:\n", buf.st_dev + 'A' );
err = ctime_s(timebuf, 26, &buf.st_mtime);
if (err)
{
printf("Invalid arguments to ctime_s.");
exit(1);
}
printf( "Time modified : %s", timebuf );
}
}
File size : 732
Drive : C:
Time modified : Thu Feb 07 14:39:36 2002
関連項目
ファイル処理
_access
, _waccess
_fstat
, _fstat32
, _fstat64
, _fstati64
, _fstat32i64
, _fstat64i32
_getmbcp
_setmbcp