Rozdział 7. ♦ System plików 191
Do testów wykorzystany został plik o nazwie plik. temp, zapisany w katalogu bieżącym o rozmiarze przekraczającym 2 GB. Jak widać na rysunku 7.2, zwykłe wywołanie funkcji filesize spowodowało pojawianie się wartości ujemnej. Dopiero sformatowanie tego wyniku za pomocą funkcji sprintf (por. rozdział 6., sekcja „Formatowanie specjalne”) spowodowało wyświetlenie prawidłowego rozmiaru. Zastosowany został ciąg formatujący %u.
0ik Edycja Widok Przejdź Jakładki Narzędzia Pomoc | |
1 3 | U http://localhost/index.php |
ń |
♦ Rozpocznij przygód... O Aktualności
Rysunek 7.2.
Zastosowanie funkcji sprintf do formatowania wyników funkcji
Wynik wywołania filesize na pliku o wielkości powyżej 2GB: -1673520640
Wynik sformatowany za pomocą funkcji sprintf:
2621446656
Przy pisaniu skryptów przydatne są również funkcje pozwalające stwierdzić, czy dany element jest plikiem, czy katalogiem. Funkcja i s_f i 1 e pozwala ustalić, czy ciąg znaków przekazany jej w postaci argumentu wskazuje na plik. Z kolei i s_di r pozwala stwierdzić, czy ciąg znaków przekazany jej w postaci argumentu wskazuje na katalog. Przykładowo jeśli w katalogu bieżącym istnieje plik o nazwiefile.txt, to wywołanie: is_file('./fi1e.txt')
zwróci wartość true, jeśli natomiast w katalogu bieżącym nie będzie pliku o takiej nazwie, wywołanie to zwróci wartość false. Podobnie, jeśli istnieje katalog o ścieżce dostępu /usr/tmp/abc/, to wywołanie: i s_di r('/usr/tmp/abc/')
zwróci wartość true, jeśli natomiast takiego katalogu nie będzie, wywołanie to zwróci wartość false.
Jeśli chcemy uzyskać informacje o ilości wolnego miejsca na dysku, możemy skorzystać z funkcji disk_free_space. Funkcja ta jest dostępna począwszy od PHP w wersji 4.1.0. Przyjmuje ona w postaci argumentu nazwę katalogu i zwraca ilość wolnego miejsca (w bajtach) na dysku logicznym (lub partycji), na którym znajduje się ten katalog. Poprawne są zatem wywołania:
disk_free_space(7') di sk_free_space('./') di sk_free_space('/usr/tmp')
W przypadku pracy z systemem Windows, mogą mieć one również postać:
di sk_free_space('c:W') disk_free_space( 'd.-Wsystem')