Inne artykuły
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.
_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:
fstream plik;
plik.open( danePliku.name, ios::in );
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.