STAT的使用

文件大于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.LIBMSVCRT.DLL 用インポート ライブラリ、リテール版

戻り値

ファイルの状態に関する情報が取得できると 0 を返します。エラーが発生すると -1 を返し、グローバル変数 errnoENOENT を設定して、ファイル名またはパス名が見つからなかったことを示します。

引数

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值