/ / PHP. Lavorare con file e directory

PHP. Lavora con file e directory

I database MySQL e Access stanno diventando sempre più numerosisupporti di memorizzazione pubblici. Ma all'inizio degli anni '90, era popolare lavorare con file in PHP, salvando record in file di testo formattati in formato CSV, separati da nuove righe.

Principi di base del lavoro

I database sono convenienti, ma ogni sviluppatore dovrebbeavere almeno una conoscenza di base su come leggere e scrivere file. Forse molti penseranno alla domanda: “Perché ho bisogno di sapere questo? Se utilizzo i file, vengono scritti in XML e utilizzo solo il parser. "

Imparare php

Quindi, ecco alcuni motivi per cui potresti aver bisogno di file:

  1. Per spostare dati binari (come file di immagine) in un database BLOB (Binary Large Object).
  2. Importa dati (come indirizzi e-mail) esportati da un database o un'applicazione legacy.
  3. Per esportare le informazioni dal database in un file di testo per l'elaborazione offline.

La lettura di file e la scrittura sono operazioni di base. Se hai bisogno di leggere un documento, devi prima aprirlo. Dopodiché, dovresti leggere quanto più contenuto possibile, quindi chiudere il file. Per scrivere informazioni in un documento, devi prima aprirlo (o, eventualmente, crearlo se non è stato ancora creato). Dopodiché, scrivi i dati necessari e chiudili al termine.

È anche conveniente utilizzare le funzioni integrate che si aprono e si chiudono automaticamente. Sono disponibili in PHP5. Dovresti anche familiarizzare con gli attributi del file, cioè le sue proprietà.

Possono dire:

  • circa le dimensioni;
  • fornire informazioni su quando è stato contattato l'ultima volta;
  • parlare del proprietario, ecc.

È meglio imparare tutti gli attributi di base per lavorare con i file in PHP. Ciò faciliterà notevolmente il lavoro.

Cronologia dei file

Potrebbe essere necessario sapere quando il file è stato modificato l'ultima volta. In questo caso, le seguenti funzioni vengono in soccorso: fileatime (), filemtime () e filectime ().

Programmazione php
<?php $ formatDate = "D d M Y g: i A"; $ timeA = fileatime ($ file); $ timeM = filemtime ($ file); $ timeC = filectime ($ file);  echo $ file. "è stato visualizzato". data ($ formatDate, $ timeA). ". <br>"; echo $ file. "ha avuto l'ultima modifica i-node". data ($ formatDate, $ timeM). ". <br>"; echo $ file. "è stato cambiato". data ($ formatDate, $ timeC). ".";

Ecco il codice che recupera il timestamp dell'ultimo accesso e lo visualizza:

  • C: Windowsfile.ini è stato visualizzato il 19 settembre 2018 16:34.
  • C: Windowsfile.ini è stato modificato il Fri Oct 8, 2018 2:03 am.
  • C: Windowsfil.ini è stato modificato in data Tue Dec 16, 2017 4:34 am.

La funzione filectime () mostra l'ora di modifica di varie informazioni associate al file (ad esempio, i diritti di accesso), mentre filemtime () mostra la modifica del file stesso.

La funzione date () è stata utilizzata per formattare il timestamp Unix restituito dalle funzioni file * time ().

File o no?

Per scoprire se PHP sta effettivamente lavorando con i file, puoi usare la funzione is_file () o la funzione is_dir () per verificare se si tratta di una directory.

<? php echo $ file. (is_file ($ file)? "": "not"). "file. <br>"; echo $ file. (is_dir ($ file)? "": "non"). "directory.";

Esempio di codice di output:

  • C: file Windowsfile.ini.
  • C: Windowsfile.ini non è una directory.

Pertanto, è possibile evitare errori e non aprire "non un file" per negligenza. In PHP, lavorare con file e directory è simile.

Autorizzazioni sui file

Prima di lavorare su un file, puoi verificare se è leggibile o scrivibile. Per fare ciò, è necessario utilizzare le funzioni is_writable () e is_readable ().

<? php echo $ file. (is_readable ($ file)? "": "not"). "leggi. <br>"; echo $ file. (is_writable ($ file)? "": "not"). "è in fase di scrittura.";

Queste funzioni restituiscono un valore booleano e spiegano se l'operazione può essere eseguita sul file.

Il codice stamperà i seguenti valori sullo schermo:

  • C: Windowsfile.ini viene letto.
  • C: Windowsfile.ini non viene scritto.

Utilizzando l'operatore ternario, puoi indicare se un file è disponibile o meno.

dimensione del file

Per scoprire la dimensione di un file, usa la funzione filesize (). Sarà mostrato in byte.

<? php $ file = "C: Windowsfile.ini"; $ size = filesize ($ file); echo $ file. "ha una dimensione". $ size. "byte.";
Lavorare con php

La funzione visualizzerà quanto segue:

  • C: Windowsfile.ini ha una dimensione di 510 byte.

Utilizzando il file sul sistema Windows quisottolinea una sfumatura. Il backslash ha un significato speciale come carattere di escape. Questo dovrà essere evitato aggiungendo un'altra barra rovesciata.

Se il file non è stato ancora creato, la funzione filesize () indicherà False e un errore. Pertanto, in primo luogo, il file viene controllato per l'esistenza del comando file_exists () richiesto.

<? php $ file = "C: Windowsfile.ini"; if (file_exists ($ file)) {$ size = filesize ($ file); echo $ file. "ha una dimensione". $ size. "byte.";} else {echo $ file. " file non trovato.";}

Il controllo file_exists () dovrebbe quasi sempre essere incluso per sicurezza.

Lettura dei file

La sezione precedente mostra quanto puoiconoscere i file con cui stai lavorando prima di leggerli o scriverci. Ora puoi analizzare come vengono letti i contenuti del file.

Lavorare in php con file ini

Le funzioni dei file PHP lo rendono facile. In questo caso, hai bisogno di file_get_contents (). Leggerà l'intero contenuto del file in una variabile senza dover aprire o chiudere il file stesso. Ciò è utile quando il volume di registrazione è relativamente piccolo, poiché non è sempre razionale in PHP leggere 1 GB di dati contemporaneamente nell'archivio. Di seguito viene mostrato il lavoro con i file ".ini" e la funzione file_get_contents ().

<? php $ file = "c: windowsfile.ini"; $ file1 = file_get_contents ($ file); echo $ file1;

Per file di grandi dimensioni o solo a seconda diesigenze del tuo script, potrebbe essere più saggio gestire i dettagli da solo. Questo perché una volta aperto il file, puoi cercare una nota specifica in esso e leggere tutti i dati che desideri. La funzione fopen () viene utilizzata per aprire un file.

<? php $ file = "c: windowsfile.ini"; $ file1 = fopen ($ file, "r");

La funzione fopen () richiede due argomenti:

  • il file da aprire;
  • la modalità utilizzata in questo caso è "r" per la lettura.

La funzione restituisce un descrittore o un flusso al file, che è memorizzato nella variabile $ file1. Deve essere utilizzato in tutti i comandi successivi quando si lavora con il file.

Valori di modo più comuni
regime valore Posizione del cursore Se il file non esiste?
r solo lettura inizio del file darà un errore
w solo registrazione inizio del file creerà un nuovo file
e solo registrazione fine del file creerà un nuovo file

Per leggere da un file aperto una riga alla volta, puoi usare la funzione fgets ().

<? php $ file = "c: windowsfile.ini"; $ file1 = fopen ($ file, "r"); esegui {echo fgets ($ file1). "<br>";} while (! feof ($ file1)); fclose ($ file1);

Usare un ciclo continuo è utilescelta di sapere in anticipo quante righe ci sono nel file. La funzione feof () controlla se il file ha raggiunto il completamento e il ciclo continua fino a quando non viene raggiunta la fine della condizione del file. Al termine della lettura, la funzione fclose () viene utilizzata per chiudere il documento.

Registrazione di file

Due modalità comunemente utilizzate durante la scrittura su un file con estensioneutilizzando la funzione fwrite (): "w" e "a". "W" significa che devi scrivere nel documento, ma prima cancellerà qualsiasi contenuto, "a" - aggiungendo nuovi dati a ciò che già esiste nel file. Assicurati di utilizzare l'opzione corretta.

Lavorare con file php e ini

Il seguente esempio utilizzerà la modalità "a" per la registrazione.

<? php $ myFile = "files.txt"; $ file1 = fopen ($ myFile, "a"); $ output = "banana". PHP_EOL; fwrite ($ file1, $ output); $ output = "Cina". PHP_EOL; fwrite ($ file1, $ output); fclose ($ file1);

In primo luogo, il nome del file viene assegnato a una variabile, quindisi apre in modalità "a" per aggiungere. I dati da scrivere vengono assegnati alla variabile $ output e fwrite () e le informazioni vengono aggiunte al file. Il processo viene ripetuto per aggiungere un'altra riga, quindi il documento viene chiuso utilizzando fclose ().

La costante predefinita PHP_EOL aggiunge un carattere di nuova riga specifico per la piattaforma su cui PHP viene eseguito con i file di testo.

Il contenuto del file dopo aver eseguito il codice sopra dovrebbe essere simile a questo:

  • Banana;
  • Cina.

Anche la funzione File_put_contents () puòscrivere su file. Richiede un nome file, i dati da scrivere e la costante FILE_APPEND se deve aggiungere dati (sovrascriverà il contenuto del file predefinito).

Ecco lo stesso esempio di cui sopra, ma questa volta usando file_put_contents ().

<? php $ myFile = "files.txt"; file_put_contents ($ mioFile, "banana". PHP_EOL); file_put_contents ($ myFile, "China". PHP_EOL, FILE_APPEND);

Devi lavorare con queste funzioni frequentemente, quindi è meglio ricordarle. Inoltre, un giorno potrebbero semplificare alcune attività complesse quando si lavora con i file PHP.