Библиотека FatFS: f_readdir |
Добавил(а) microsin |
f_readdir Функция f_readdir читает содержимое директории (папки). FRESULT f_readdir ( DIR* DirObject, /* Указатель на открытый объект директории */ FILINFO* FileInfo /* Указатель на информационную структуру файла */ );Параметры
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_INVALID_OBJECT, FR_TIMEOUT, FR_NOT_ENOUGH_CORE Описание
Функция f_readdir последовательно, друг за другом читает элементы (файлы и папки), находящиеся в директории DirObject. Все элементы директории могут быть прочитаны повторяющимися вызовами f_readdir. Когда будут прочитаны все элементы в директории, функция вернет строку null в поле fname[] без какой-либо ошибки. Когда в качестве параметра FileInfo указан null указатель, то позиция чтения диреректории отматывается на начало. Когда включена опция LFN (разрешены длинные имена), поля lfname и lfsize в FileInfo должны быть предварительно инициализированы до вызова f_readdir. Поле lfname является указателем на буфер, в котором будет сохранена строка с длинным именем файла. Поле lfsize содержит размер для буфера строки, указанный в единицах TCHAR. Если размер буфера чтения или рабочего буфера LFN недостаточен для длинного имени, то будет возвращена null строка в буфере LFN. Если длинное имя содержит любой символ, который не может быть сконвертирован в код OEM, будет возвращена null строка, если не включена конфигурация Unicode API. Когда lfname является NULL, то длинное имя не будет возвращено. Когда у объекта нет длинного имени, в буфере короткого имени SFN могут содержаться некоторые маленькие прописные буквы. Когда разрешено использование отностельных имен пути relative path (_FS_RPATH == 1), элементы директории "." и ".." не будут отфильрованы и будут появляться как элементы директории при вызовах f_readdir.
Внимание: если используется длинные имена файлов (задано #define _USE_LFN 1), то поля lfname и lfsize обязательно должны быть инициализированы на валидный буфер в памяти, иначе поведение кода библиотеки FatFS будет непредсказуемым. Кроме того, для доступа к файлам даже при включенных длинных именах нужно использовать короткое имя файла (поле fname), так как если имя файла по размеру меньше 8.3, то длинное имя будет пустым (0 == strlen(lfname)). Краткая информация (QuickInfo)
Функция доступна, если задано _FS_MINIMIZE <= 1. Пример кода
FRESULT scan_files ( char* path /* Начальная точка сканированияСм. также [Ссылки] 1. f_readdir - Read a directory item (оригинал статьи на английском языке). |