PHP mette a disposizione diverse funzioni per lavorare con il file system, dai costrutti per leggere e scrivere file a quelli per creare directory o modificare i permessi.
file_exists()
La funzione file_exists()
controlla se un file o directory esiste. Prende in ingresso il path del file da verificare e restituisce un valore booleano.
if (file_exists('/tmp/miofile') {
echo 'file esistente';
} else {
echo 'file non trovato';
}
is_file()
La funzione is_file()
verifica se il path passato come parametro è un file. Restituisce false
se, ad esempio, il file è una directory o non esiste.
if (is_file('/tmp/miofile') {
echo 'file valido';
} else {
echo 'la risorsa non esiste oppure non è un file';
}
filesize()
La funzione filesize()
restituisce la dimensione di un file in bytes. Nel caso in cui il file non esista o non sia possibile calcolarne la dimensione restituisce false
.
echo "la dimensione del file è di " . filesize('/tmp/miofile') . " bytes";
file_get_contents()
La funzione file_get_contents()
restituisce una stringa con il contenuto di un file. Il parametro principale che prende in ingresso è il path del file.
Supponiamo di avere un file che contiene degli utenti, uno per riga. Il seguente codice leggerà il contenuto del file e creerà un array con gli utenti trovati.
$usersContent = file_get_contents('/tmp/users.txt');
$users = explode("\n", $usersContent);
var_dump($users);
file_put_contents()
La funzione file_get_contents()
scrive una stringa all'interno di un file. Prende in ingresso tre parametri:
- path del file;
- dati da scrivere;
- flag: possono essere tre tipi di costanti, la principale è
FILE_APPEND
con cui possiamo indicare a PHP di appendere il dato anziché sostituirlo a quello esistente.
Riprendendo l'esempio precedente: supponiamo stavolta di avere un array di nomi e di volerli salvare all'interno di un file, uno per ogni riga:
$users = ['Simone', 'Giuseppe', 'Renato'];
file_put_contents('/tmp/users.txt', implode("\n", $users));
copy()
La funzione copy()
, come ci suggerisce il nome, ci consente di copiare un file in un path di destinazione. Prende in ingresso due parametri:
- il path sorgente;
- il path di destinazione.
e restituisce true
se la copia va a buon fine, false
altrimenti. Notifica un warning se il file non esiste.
if (!copy('/tmp/file_sorgente.txt', '/tmp/file_destinazione')) {
echo "si è verificato un errore durante la copia del file";
}
unlink()
La funzione unlink()
cancella un file dal file system. Prende in ingresso il path del file e restituisce come valore di ritorno un booleano: true
se il file è stato cancellato correttamente, altrimenti false
. Notifica un warning se il file non esiste.
if (!unlink('/tmp/file_da_cancellare') {
echo "si è verificato un errore durante la copia del file";
}