35824 skanuj0189 (4)

35824 skanuj0189 (4)



Rozdział 7. ♦ System plików 201

Listing 7.11. Odczyt zawartości pliku za pomocą funkcji fgetc <html>

<head>

<title>Odczyt zawartości pliku tekstowego</title> </head>

<body>

<?php

if(!$fd - fopen('test.txt'. 'r')) exit("Nie mogę otworzyć pliku test.txt"): while(($str = fgetc(Sfd)) != false){ if($str = "\n") $str - "<br>“: echo(Sstr);

}

fclose(Sfd):

?>

</body>

</html>

Odczyt określonej liczby bajtów

Kiedy chcemy odczytać określoną liczbę bajtów lub też odczytujemy dane z pliku binarnego, powinniśmy użyć funkcji fread. Jej wywołanie ma postać: fread{deskryptor. ile)

gdzie deskryptor to deskryptor pliku zwrócony przez funkcję fopen, a i le określa liczbę bajtów do odczytania. Funkcja zwraca odczytany fragment pliku w postaci ciągu typu string. Należy pamiętać, że w przypadku plików binarnych i systemów rozróżniających pliki binarne i tekstowe (takie jak Windows) plik powinien być otwarty w trybie binarnym (np. rb, wb). Odczyt pliku i wysłanie jego zawartości do przeglądarki można przeprowadzić np. za pomocą kodu widocznego na listingu 7.12. Dane odczytywane są w blokach po 4096 bajtów.

Listing 7.12. Odczyt pliku za pomocąfunkcji fread <?php

if(!$fd = fopenCtest.txt'. 'rb')) exit("Nie mogę otworzyć pliku test.txt"): while(!feof($fd)){ echo fread($fd. 4096):

m )

fclose(Sfd):

Tego typu skrypt można również przekonstruować w taki sposób, aby nie zachodziła konieczność wywoływania funkcji feof testującej osiągnięcie końca pliku. Wedle dokumentacji PHP zostanie wtedy osiągnięta większa wydajność, choć będzie miało to znaczenie jedynie przy odczycie dużych plików. Przeróbka opiera się na spostrzeżeniu, że jeżeli ciąg zwrócony przez wywołanie fread będzie miał długość 0 bajtów, będzie to oznaczać, że zostały już odczytane wszystkie dane z pliku. Pozwala to na skonstruowanie pętli do.. .while w postaci przedstawionej na listingu 7.13.


Wyszukiwarka

Podobne podstrony:
12458 skanuj0177 (8) Rozdział 7. ♦ System plików 189 Nazwa katalogu, którego zawartość chcemy odczyt
skanuj0209 (4) Rozdział 7. ♦ System plików 221 Rysunek 7.13. Przykładowy efekt działania skryptu&nbs


więcej podobnych podstron