Loading...
Searching...
No Matches
I/O Read/Write
libavformat

## Files

file | avio.h
| Buffered I/O operations.

## Detailed Description

# Directory listing

The directory listing API makes it possible to list files on remote servers.

Some of possible use cases:

- an "open file" dialog to choose files from a remote location,
- a recursive media finder providing a player with an ability to play all files from a given directory.

## Opening a directory

At first, a directory needs to be opened by calling avio_open_dir() supplied with a URL and, optionally, AVDictionary containing protocol-specific parameters. The function returns zero or positive integer and allocates AVIODirContext on success.

AVIODirContext *ctx = NULL;
if (avio_open_dir(&ctx, "smb://example.com/some_dir", NULL) < 0) {
fprintf(stderr, "Cannot open directory.\n");
abort();
}
AVIODirContext
struct AVIODirContext AVIODirContext
Definition avio.h:104
avio_open_dir
int avio_open_dir(AVIODirContext **s, const char *url, AVDictionary **options)
Open directory for reading.

This code tries to open a sample directory using smb protocol without any additional parameters.

## Reading entries

Each directory's entry (i.e. file, another directory, anything else within AVIODirEntryType) is represented by AVIODirEntry. Reading consecutive entries from an opened AVIODirContext is done by repeatedly calling avio_read_dir() on it. Each call returns zero or positive integer if successful. Reading can be stopped right after the NULL entry has been read – it means there are no entries left to be read. The following code reads all entries from a directory associated with ctx and prints their names to standard output.

AVIODirEntry *entry = NULL;
for (;;) {
if (avio_read_dir(ctx, &entry) < 0) {
fprintf(stderr, "Cannot list directory.\n");
abort();
}
if (!entry)
break;
printf("%s\n", entry->name);
avio_free_directory_entry(&entry);
}
avio_free_directory_entry
void avio_free_directory_entry(AVIODirEntry **entry)
Free entry allocated by avio_read_dir().
avio_read_dir
int avio_read_dir(AVIODirContext *s, AVIODirEntry **next)
Get next directory entry.
AVIODirEntry
Describes single entry of the directory.
Definition avio.h:87
AVIODirEntry::name
char * name
Filename.
Definition avio.h:88