CompZone.Org :: Artykuły :: PHP
Jaki jest Twój wiek?
40 - 59
26 - 39
19 - 25
13 - 18
12 i mniej
60 i więcej
Sonda Wyniki

Add to Google

Operacje na plikach

W tym artykule nauczymy się działać na plikach tzn. odczytywać ich zawartość, zapisywać itd.

Etapy odczytu i zapisu pliku

Zapis pliku

  1. Otwarcie pliku, jeśli nie istnieje należy go utworzyć
  2. Zapisanie danych w pliku
  3. Zamknięcie piku

Odczyt pliku

  1. Otwarcie pliku
  2. Odczyt danych z pliku
  3. Zamknięcie pliku

Tryby otwarcia pliku w funkcji fopen

TrybOpis
rTryb odczytu - otwarcie pliku do odczytu poczynając od jego początku
r+Tryb odczytu - otwarcie pliku do odczytu i zapisu poczynając od jego początku
wTryb zapisu - otwarcie pliku do zapisu poczynając od jego początku. Jeżeli plik istnieje bieżąca zawartość zostaje skasowana. W przeciwnym wypadku nastąpi próba jego utworzenia.
w+Tryb zapisu - otwarcie pliku do zapisu i odczytu poczynając od jego początku. Jeżeli plik istnieje bieżąca zawartość zostaje skasowana. W przeciwnym wypadku nastąpi próba jego utworzenia.
aTryb dodawania - otwarcie pliku do dodawania zawartości począwszy od końca istniejącej zawartości. Jeżeli plik nie istnieje nastąpi próba jego utworzenia.
a+Tryb dodawania - otwarcie pliku do dodawania zawartości i odczytu począwszy od końca istniejącej zawartości. Jeżeli plik nie istnieje nastąpi próba jego utworzenia.
bTryb binarny - stosowany w połączeniu z jednym z powyższych typów w przypadku korzystania z systemu rozróżniającego pliki tekstowe i binarne. Windows go rozróżnia, Uniks nie.

Teraz przedstawię skrypt tworzący prosty "notatnik online" na którym będę tłumaczył użyte funkcje.

 <?

$notatka = $_POST['notatka'];

//sprawdzenie czy zmienna istnieje (isset())
if( isset($notatka) ){

$not = fopen("notatnik.txt", 'w');
fwrite($not, $notatka);
fclose($not);

}

?>
<form action="notatnik.php" method="post">
<textarea name="notatka" cols="40" rows="10">
<!-- odczytanie zawartości pliku -->
<? readfile("notatnik.txt"); ?>
</textarea><br />
<input type="submit" value="Zapisz">
</form>

Odczyt pliku

W tym przykładzie zastosowałem funkcje readfile, która odczytuje cały plik za jednym razem.

Prototyp funkcji readfile

int readfile(string nazwa_pliku, int [include_path]);

Funkcja ta zwraca całkowitą liczbę bajtów odczytaną z pliku, a w miejscu jej użycia wyświetla całą zawartość pliku.

Inne funkcje wykorzystywane do odczytywania danych z pliku:

Cały plik za jednym razem

Wiersz po wierszu

Poniżej znajduje się kod odczytujący ten sam plik tylko za pomocą funkcji fgets.

 <?php
//otwarcie pliku i przypisanie wskaźnika do zmiennej $w
$w = fopen("notatnik.txt", 'r');

//pętla wciągająca wiersz po wierszu
while(!feof($w)){

//funkcja fgets pobiera wskaźnik pliku oraz długość stringu
$zawartosc = fgets($w, 999);
echo $zawartosc.'<br />';

}

//zamknięcie pliku
fclose($w);
?>

fopen

Pobiera nazwę pliku wraz z rozsezeniem, który ma otworzyć oraz tryb otwarcia.

feof

Sprawdza kiedy następuje koniec pliku i zwraca wartość true.

fclose

Zamyka otwarty plik, jako parametr pobiera wskaźnik pliku.

Zapis do pliku

Zapis do pliku przebiega bardzo podobnie do odczytu z tą różnica że należy nadać inny tryb otwarcia pliku oraz użyć funkcji fwrite, która zapisze określony ciąg znaków w pliku.

 <?php
$not = fopen("notatnik.txt", 'w'); //ad.1
fwrite($not, $notatka); //ad.2
fclose($not); //ad.3
?>

ad.1 - otwarcie pliku notatnik.txt w trybie w
ad.2 - użycie funkcji fwrite do zapisania ciągu znaków w pliku.

Prototyp funkcji fwrite

int fwrite(int wskaznik_pliku, string ciąg, int [dugosc]);

W moim przypadku ciągiem który ma być umieszczony w pliku jest ciąg pochodzący z formularza.

ad.3 - zamkniecie pliku.

Inne przydatne funkcje plikowe

file_exists - sprawdza istnienie pliku

 <?php
if (file_exists("notatnik.txt"))
echo 'Plik istnieje, odczytanie możliwe.';
else
echo 'Niestety, brak pliku!';
?>

filesize - określa wielkość pliku

 <?php
echo filesize("notatnik.txt");
?>

unlink - kasowanie pliku

 <?php
unlink("notatnik.txt");
?>
jedre @ 11-07-2006 21:45
Brak komentarzy...
Copyright © 2005-2006 Compzone.Org. Kopiowanie i wykorzystywanie materiałów zawartych na tej stronie bez zgody autora zabronione!