Gestire File con il PHP

Il PHP è ricco di funzioni per gestire file e directory. Noi nell'ambito del nostro corso descriveremo l'utilizzo delle principali funzioni nei casi più comuni demandando a seminari e corsi specifici l'affrontare i particolari della questione.

 

 

 

Lettura di un file

La lettura di un file viene effettuata in due passi; prima viene utilizzata la funzione fopen() che, dato il percorso del file da aprire e la modalità di apertura (in lettura nel nostro caso, ma sono previste scrittura ed aggiornamento, inteso come append) restituisce un puntatore all'oggetto file aperto, questo file pointer viene utilizzato dalle altre funzioni che agiscono sul file referenziato.

Nell'esempio che segue il file datiprova.txt viene aperto in sola lettura; in caso di fallimento dell'operazione di apertura verra segnalato un errore e interrotta l'esecuzione dello script.

// impostazione del nome del file da aprire

$file_da_aprire = “datiprova.txt”;

// apertura in modalità di sola lettura

$fi_op = fopen($file_da_aprire,”r”) or die(“Non riesco ad aprire il file $file_da_aprire”);

 

a disposizione di chi sviluppa in PHP ci sono varie funzioni per la lettura del contenuto del file;

una di queste è fgets(), che esamina una riga per volta

// lettura del file datiprova.txt puntato attraverso il file pointer in $fi_op usando fgets()

while ($riga = fgets($fi_op,4096)) { echo $riga.”\n”;}

 

Con la stessa istruzione è anche possibile leggere tutto il file in un solo colpo

// lettura del file con una sola istruzione

$tutto_il_file = fgets($fi_op, filesize($file_da_aprire));

 

una volta conclusa la lettura del file, questo deve essere chiuso con fclose() referenziandone il file pointer.

fclose($fi_op) ;

 

 

Lettura di un file in un array

Utilizzando la funzione file() è possibile, leggere il contenuto di un file di testo e creare un array in cui ogni elemento contiene una riga del file (compreso il carattere di controllo di newline).

La funzione file() non necessita della preventiva apertura del file e del file pointer derivante.

 

Esempio:

// lettura di un file in in un array con l'istruzione file

$righe = file($file_da_leggere);

// mostro il contenuto di $righe

while (list ($line_num, $line) = each ($righe)) {

echo "<b>Line $line_num:</b> " . $line . "<br>\n";

}

Scrittura di un file

La scrittura in un file è del tutto simile alla lettura; la funzione fopen() verrà invocata in scrittura;

la scrittura vera e propria sarà realizzata per mezzo della funzione fputs().

Esempio:

// testo da memorizzare nel file

$txt = “sto provando fputs “;

// apertura del file

$fipo = fopen($nomefile,”w”) or die (“Impossibile aprire il file: $nomefile);

// scrittura

fputs($fipo,$txt) or die (“Non posso scrivere sul file: $nomefile”);

// chiusura del file

fclose($fipo);

 

Elenchiamo, ora, le principali funzioni per la gestione dei file :

basename() -- dato un path restituisce il nome del file nel path;

chgrp() -- cambia il gruppo di appartenenza del file;

chmod() -- cambia gli attributi del file;

chown – cambia il proprietario del file;

copy() -- copia un file da un file sorgente ad uno destinazione;

fclose – chiude il file relativi al file pointer indicato;

feof() -- verifica l' EOF (end of file) del file pointer indicato;

fgets() -- acquisisce una linea dal file indicato dal file pointer;

file_exists() – verifica se il file esiste o no;

fileperms() – restituisce i permessi del file;

fileowner() -- restituisce il proprietario di un file;

filesize() -- restituisce le dimensioni del file;

filetype() -- restituisce il tipo del file (fifo,char,block,link,fileo unknown)

fputs() -- scrive su un puntatore di file;

fread() -- legge il file in binario;

fseek – muove la posizione del file pointer;

fwrite() -- scrive un file in binario;

rewind – riposiziona all'inizio del file il file pointer;

rename – rinomina un file.

 

 

 

 

Leggere il contenuto di una directory

Il PHP mette a disposizioni numerose funzioni anche per navigare attraverso il filesystem, ora qui per brevità mostreremo come elencare il contenuto di una directory

// esploro la directory corrente (.)

$dir = “.”;

//$pd è il pointer alla directory dopo la opendir

$pd = opendir($dir);

echo “Gli archivi contenuti nella directory <b>$dir<b> sono:<br>”;

while ($archivio = readdir($pd)) {

echo “$archivio<br>”;

}

closedir($pd);

Le principali funzioni per la manipolazioni delle directory sono :

chdir() -- cambia la directory corrente;

closedir() -- chiude la coonessione ad una directory aperta in precedenza con opendir();

opendir() -- apre un directory e restituisce un puntatore alla stessa (dir_handle);

readdir() -- legge una voce dalla directory puntata dal dir_handle;

rewinddir() -- riposiziona il dir_handle all'inizio

mkdir() -- crea una directory;

rmdir() -- cancella una directory.