f_readdir

The f_readdir function reads directory entries.

FRESULT f_readdir (
  DIR* DirObject,    /* Pointer to the directory object structure */
  FILINFO* FileInfo  /* Pointer to the file information structure */
);

Parameters

DirObject
Pointer to the open directory strcture.
FileInfo
Pointer to the file information structure to store the read item.

Return Values

FR_OK (0)
The function succeeded.
FR_NOT_READY
The disk drive cannot work due to no medium in the drive or any other reason.
FR_RW_ERROR
The function failed due to a disk error or an internal error.
FR_INVALID_OBJECT
The directory object is invalid.

Description

The f_readdir function reads directory entries in sequence. All items in the directory can be read by calling f_readdir function repeatedly. When all directory items have been read and no item to read, the function returns a null string into f_name[] member without any error. For details of the file informations, refer to the FILINFO. This function is not supported in minimization level of >=2.

Sample Code

void scan_files (char* path)
{
    FILINFO finfo;
    DIR dirs;
    int i;

    if (f_opendir(&dirs, path) == FR_OK) {
        i = strlen(path);
        while ((f_readdir(&dirs, &finfo) == FR_OK) && finfo.fname[0]) {
            if (finfo.fattrib & AM_DIR) {
                sprintf(&path[i], "/%s", &finfo.fname[0]);
                scan_files(path);
                path[i] = 0;
            } else {
                printf("%s/%s\n", path, &finfo.fname[0]);
            }
        }
    }
}

References

f_opendir, f_stat, FILINFO, DIR

Return