Функция f_stat получает текущее состояние (статус) файла.
FRESULT f_stat (
const TCHAR* FileName, /* Указатель на имя файла или имя директории */
FILINFO* FileInfo /* Указатель на структуру FILINFO */
);
Параметры
- FileName
- Указатель на null-terminated (оканчивающуюся нулем) строку, которая содержит имя файла или директории, о которых нужно получить информацию (состояние).
- FileInfo
- Указатель на пустую (чистую) структуру FILINFO, куда будет сохранена информация о файле (или директории).
Возвращаемые значения
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE
Описание
Функция f_stat позволяет получить информацию о файле или директории. Для подробной информации обратитесь к описанию полей структуры FILINFO, и к описанию функции f_readdir. Функция f_stat не поддерживается на уровне минимизации >= 1.
Когда включена опция LFN (разрешены длинные имена, в файле ff.h задано #define _USE_LFN 1), поля lfname и lfsize в FileInfo должны быть предварительно инициализированы до вызова f_stat. Поле lfname является указателем на буфер, в котором будет сохранена строка с длинным именем файла. Поле lfsize содержит размер для этого буфера строки, указанный в единицах TCHAR. Этот указатель должен указывать на валидный буфер в RAM, иначе все функции, которые используют переменную FILINFO (например f_stat) могут привести к непрогнозированному поведению программы (обычно Data Abort или зависание). Кроме того, для доступа к файлам даже при включенных длинных именах нужно использовать короткое имя файла (поле fname), так как если имя файла по размеру меньше 8.3, то длинное имя будет пустым (0 == strlen(lfname)). Для дополнительной информации см. также описание функции f_readdir. Пример получения атрибутов файла:
u8 GetFileAttributes (char* filename){
u8 attribute = 0;
FILINFO FileInfo;#if _USE_LFN
static char lfn[_MAX_LFN + 1];
FileInfo.lfname = lfn;
FileInfo.lfsize = sizeof(lfn);#endif
if (FR_OK == f_stat(filename, &FileInfo))
attribute = FileInfo.fattrib;
return attribute;}
См. также
f_opendir, f_readdir, FILINFO