Nagłówek:
Files.hpp
Elementy modułu:
Moduł Files
To moduł do obsługi plików i systemu plików. Zawiera:
- common::FileStream - klasa strumienia do zapisywania i odczytywania treści pliku
- common::DirLister - klasa do listowania zawartości katalogu
- Funkcje do operacji na systemie plików, w tym:
- Zapisywanie i odczytywanie całych plików
- Sprawdzanie, czy plik albo katalog istnieje
- Odczytywanie i zapisywanie daty modyfikacji, utworzenia i ostatniego dostępu
- Tworzenie, usuwanie, zmiana nazwy i przenoszenie plików i katalogów
- Wiele funkcji posiada wariant z Must-. Wówczas funkcja zwracająca bool w przypadku błędu zwraca false, a funkcja Must- w przypadku błędu rzuca wyjątek.
- Blokowanie plików:
W obecnej implementacji:
- Windows - jeśli Lock=true, przy trybie do zapisu plik jest blokowany przed zapisem i odczytem, przy trybie tylko do odczytu plik jest blokowany tylko przed zapisem.
- Linux - jeśli Lock=true, plik jest blokowany całkowicie (funkcja flock).
- Nie ma funkcji do listowania dysków w Windows, bo one są charakterystyczne tylko dla jednego systemu, więc można z powodzeniem używać wprost funkcji WinAPI, jak GetLogicalDrives, GetDriveType i innych z listy "Volume Management Functions".
- Nie ma kopiowania ani przenoszenia katalogów wraz z całą zawartością, bo API systemowe też tego nie mają (WinAPI ma tylko MoveFile[Ex] potrafiące przenosić katalogi wyłącznie w ramach jednej partycji). Trzebaby to pisać we własnym zakresie. Poza tym nie jest aż tak potrzebne no i bez asynchroniczności oraz paska postępu nie ma zbyt wielkiego sensu.