Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Получает сведения о состоянии файла.
Синтаксис
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.
Метка даты в файле может быть представлена, если она позже полуночи, 1 января 1970 г. и до 23:59:59, 31 декабря 3000 г., UTC, если вы не используете _stat32 или _wstat32не определили _USE_32BIT_TIME_T, в этом случае дата может быть представлена только до 23:59:59 января 2038 г. в формате UTC.
Замечания
Функция _stat получает сведения о файле или каталоге, указанном параметром path , и сохраняет их в структуре, указанной в параметре buffer. Функция_stat автоматически требуемым образом обрабатывает аргументы в виде многобайтовых строк, распознавая многобайтовые последовательности символов в соответствии с текущей многобайтовой кодовой страницей.
_wstat — это версия _statс расширенными символами; аргумент path для _wstat — строка расширенных символов. _wstat и _stat ведет себя одинаково, за исключением того, что _wstat не обрабатывает строки многобайтовых символов.
Варианты этих функций поддерживают 32-разрядные или 64-разрядные типы времени, а также 32-разрядные или 64-разрядные длины файлов. Первый числовой суффикс (32 или 64) указывает размер используемого типа времени; второй суффикс i32 или i64показывает, представлен ли размер файла как 32- или 64-разрядное целое число.
_stat эквивалентен _stat64i32и struct _stat содержит 64-разрядное время, если _USE_32BIT_TIME_T не определено, в этом случае старое поведение действует; _stat использует 32-разрядное время и struct _stat содержит 32-разрядное время. Это же справедливо и для _stati64.
Примечание.
_wstat не работает с символьными ссылками Windows Vista. В таких случаях функция _wstat всегда возвращает размер файла, равный 0. Функция_stat правильно работает с символьными ссылками.
Семейство _stat функций, используемых CreateFile в Visual Studio 2015, а не FindFirstFile в Visual Studio 2013 и более ранних версиях. Это означает, что на пути, заканчивающегося косой чертой, успешно выполняется, _stat если путь относится к каталогу, а не раньше, когда функция будет ошибкой с errno заданным значением ENOENT.
Эта функция проверяет свои параметры. Если это path или buffer есть NULL, вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров".
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в 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, включает следующие поля.
| Поле | Description |
|---|---|
st_gid |
Числовой идентификатор группы, которой принадлежит файл (только для UNIX). В системах Windows это поле всегда равно нулю. Перенаправленный файл классифицируется как файл Windows. |
st_atime |
Время последнего доступа к файлу. Действительно на дисках, отформатированных в файловой системе NTFS, но не в FAT. |
st_ctime |
Время создания файла. Действительно на дисках, отформатированных в файловой системе NTFS, но не в FAT. |
st_dev |
Номер диска, содержащего файл (то же, что и st_rdev). |
st_ino |
Номер узла информации ( inode) для файла (только для UNIX). В файловых системах UNIX параметр inode описывает отметки даты и времени файла, разрешения и содержимое. Если файлы связаны жесткими ссылками друг с другом, они имеют один и тот же параметр inode. Параметр inodeи, следовательно, параметр st_inoне имеют смысла в файловых системах FAT, HPFS и NTFS. |
st_mode |
Битовая маска для информации о файловом режиме. Бит _S_IFDIR устанавливается, если параметр path задает каталог; бит _S_IFREG устанавливается, если параметр path задает обычный файл или устройство. Пользовательские биты чтения/записи устанавливаются в соответствии с режимом разрешений файла; пользовательские биты выполнения устанавливаются согласно расширению имени файла. |
st_mtime |
Время последнего изменения файла. |
st_nlink |
Всегда имеет значение 1 в файловых системах, отличных от NTFS. |
st_rdev |
Номер диска, содержащего файл (то же, что и st_dev). |
st_size |
Размер файла в байтах; 64-разрядное целое число для вариантов суффиксом i64 . |
st_uid |
Числовой идентификатор пользователя, который владеет файлом (только для UNIX). В системах Windows это поле всегда будет равно нулю. Перенаправленный файл классифицируется как файл Windows. |
Если параметр path ссылается на устройство, поле st_size, различные поля времени, поля st_devи st_rdev в структуре _stat не имеют смысла. Так как STAT.H использует тип, определенный _dev_t в TYPES.Hкоде, необходимо включить TYPES.H в STAT.H код.
Требования
| Маршрут | Обязательный заголовок | Необязательные заголовки |
|---|---|---|
_stat, , _stat32_stati64_stat64_stat32i64,_stat64i32 |
<sys/types.h>, затем <sys/stat.h> |
<errno.h> |
_wstat, , _wstat32_wstati64_wstat64_wstat32i64,_wstat64i32 |
<sys/types.h><sys/stat.h> за которым следует или<wchar.h> |
<errno.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// 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>
#include <stdlib.h>
int main( void )
{
struct _stat buf;
int result;
char timebuf[26];
const 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_fstati64_fstat64_fstat32i64,_fstat64i32
_getmbcp
_setmbcp