Программирование Файловые системы Библиотека Petit FatFS: pf_readdir Sat, December 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Библиотека Petit FatFS: pf_readdir Печать
Добавил(а) microsin   

pf_readdir

Функция pf_readdir читает элементы в директории.

FRESULT pf_readdir (
  DIR* DirObject,    /* Указатель на открытый объект директории */
  FILINFO* FileInfo  /* Указатель на информационную структуру файла */
);

Параметры

DirObject
Указатель на открытый объект директории.
FileInfo
Указатель на информационную структуру файла (file information structure), в которую будет сохранена информация о прочитанном элементе директории.

Возвращаемые значения

FR_OK (0)
Функция завершилась успешно.
FR_DISK_ERR
Функция завершилась неудачно из за ошибки в работе диска, испорченной структуры FAT или из-за внутренней ошибки.
FR_NOT_OPENED
Объект директории не был открыт.

Описание

Функция pf_readdir читает элементы (файлы и папки), находящиеся в указанной директории, последовательно друг за другом. Все элементы директории могут быть прочитаны повторяющимися вызовами функции pf_readdir. Когда все элементы директории прочитаны, и в директории больше нет элементов, функция возвратит null string в поле f_name[] без возврата какой-либо ошибки. Когда в параметре FileInfo передан нулевой указатель (null pointer), индекс чтения директории будет сброшен в начало (т. е. вызовы pf_readdir будут заново читать элементы директории).

Sample Code

FRESULT scan_files (char* path)
{
    FRESULT res;
    FILINFO fno;
    DIR dir;
    int i;

    res = pf_opendir(&dir, path);
    if (res == FR_OK) {
        i = strlen(path);
        for (;;) {
            res = pf_readdir(&dir, &fno);
            if (res != FR_OK || fno.fname[0] == 0) break;
            if (fno.fattrib & AM_DIR) {
                sprintf(&path[i], "/%s", fno.fname);
                res = scan_files(path);
                if (res != FR_OK) break;
                path[i] = 0;
            } else {
                printf("%s/%s\n", path, fno.fname);
            }
        }
    }
    return res;
}

Краткая информация (QuickInfo)

Функция доступна, когда _USE_DIR == 1.

См. также

pf_opendir, FILINFO, DIR

[Ссылки]

1pf_readdir - Read a Directory Item (оригинал статьи на английском языке).

 

Добавить комментарий


Защитный код
Обновить

Top of Page