GitHub - cxong/tinydir: Lightweight, portable and easy to integrate C directory and file reader

GitHub

CMake
Release

Lightweight, portable and easy to integrate C directory and file reader. TinyDir wraps dirent for POSIX and FindFirstFile for Windows.

Windows unicode is supported by defining UNICODE and _UNICODE before including tinydir.h.

Example

There are two methods. Error checking omitted:

tinydir_dirdir; tinydir_open(&dir, "/path/to/dir"); while (dir.has_next) { tinydir_filefile; tinydir_readfile(&dir, &file); printf("%s", file.name); if (file.is_dir) { printf("/"); } printf("\n"); tinydir_next(&dir); } tinydir_close(&dir);tinydir_dirdir; inti; tinydir_open_sorted(&dir, "/path/to/dir"); for (i=0; i<dir.n_files; i++) { tinydir_filefile; tinydir_readfile_n(&dir, &file, i); printf("%s", file.name); if (file.is_dir) { printf("/"); } printf("\n"); } tinydir_close(&dir);See the /samples folder for more examples, including an interactive command-line directory navigator.

Language

ANSI C, or C90.

Platforms

POSIX and Windows supported. Open to the possibility of supporting other platforms.

License

Simplified BSD; if you use tinydir you can comply by including tinydir.h or COPYING somewhere in your package.

Known Limitations

Limited path and filename sizes

Possible race condition bug if folder being read has changing content

Does not support extended-length path lengths in Windows - paths are limited to 260 characters. See

https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry