Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: Piotr Szawdyński
WinAPI i Windows

Listowanie zawartości katalogu

[artykuł] Artykuł opisuje w jaki sposób można wylistować zawartość katalogu znajdującego się na dysku bądź innym nośniku danych.

Sprawdzanie czy istnieje plik

Plik nagłówkowy: io.h.
C/C++
_finddata_t danePliku;
long uchwyt = _findfirst( "*.txt", & danePliku );

Jeśli wartość zmiennej uchwyt wynosi -1 to znaczy, że żaden plik nie został znaleziony. W przeciwnym wypadku jest to uchwyt za pomocą którego możemy dostać informacje o wszystkich plikach pasujących do zapisu "*.txt" w danym katalogu.
Zmienna na uchwyt musi być wystarczająco duża, żeby pomieścić wskaźnik, w przeciwnym razie będzie crash aplikacji. Dla przenośności między kompilacjami 32/64-bitowymi, należy użyć intptr_t z <cstdint>.

Przeglądanie listy znalezionych plików

int SzukamDalej = _findnext( uchwyt, & danePliku );
Jeśli zmienna SzukamDalej jest równa -1 to znaczy, że nie znaleziono więcej plików.

Zwalnianie używanych zasobów

_findclose( uchwyt );
Po zakończeniu wyszukiwania należy pamiętać o zwolnieniu zasobów (czyli uchwytu, który otrzymaliśmy po wywołaniu funkcji _findfirst(...)). Wartość -1 nie jest uchwytem - jest informacją o niepowodzeniu.

Odczytywanie pozostałych informacji o pliku

Struktura _finddata_t zawiera pola, które są wypełniane w przypadku powodzenia funkcji _findfirst(...) czy też _findnext(...).

Informacje o polach tej struktury i o ich przeznaczeniu można przeczytać w MSDN'ie http://msdn.microsoft.com​/en-us/library​/kda16keh(VS.80).aspx.

Odczytywanie nazwy pliku

Aby odczytać nazwę pliku należy wykorzystać dane zwrócone do struktury przez funkcje _findfirst() lub _findnext().

Przykładowe otwarcie znalezionego pliku do odczytu:
C/C++
fstream plik;
plik.open( danePliku.name, ios::in );