English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderá a usar las funciones del sistema de archivos de PHP para crear dinámicamente, acceder (o leer) y manipular archivos.
Dado que PHP es un lenguaje de programación del lado del servidor, le permite usar archivos y directorios almacenados en el servidor web. En este tutorial, aprenderá a usar las funciones del sistema de archivos de PHP en el servidor web para crear, acceder y operar con archivos.
Para usar archivos, primero debe abrir el archivo. La función fopen() de PHP se utiliza para abrir archivos. La sintaxis básica de esta función se puede presentar de la siguiente manera:
fopen(filename, mode)
El primer parámetro pasado a fopen() especifica el nombre del archivo que se debe abrir, y el segundo parámetro especifica en qué modo se debe abrir el archivo. Por ejemplo:
<?php $handle = fopen("data.txt", "r"); ?>Prueba a ver‹/›
Puede abrir un archivo de la siguiente manera:
Modo | ¿Qué puede hacer |
---|---|
r | Abrir archivo solo para lectura |
r+ | Abrir archivo para lectura y escritura |
w | Abrir archivo solo para escritura y borrar su contenido. Si el archivo no existe, PHP intentará crearlo. |
w+ | Abrir archivo para lectura y escritura y borrar su contenido. Si el archivo no existe, PHP intentará crearlo. |
a | Añadir. Abrir archivo solo para escritura. Al escribir al final del archivo, se conservan los contenidos del archivo. Si el archivo no existe, PHP intentará crearlo. |
a+ | Lectura/Añadir. Abrir archivo para lectura y escritura. Al escribir al final del archivo, se conservan los contenidos del archivo. Si el archivo no existe, PHP intentará crearlo. |
x | Abrir archivo solo para escritura. Si el archivo ya existe, devuelve False y genera un error. Si el archivo no existe, PHP intentará crearlo. |
x+ | Abrir archivo para lectura y escritura; de lo contrario, su comportamiento es el mismo que con "x". |
Si intenta abrir un archivo inexistente, PHP generará un mensaje de advertencia. Por lo tanto, para evitar estos mensajes de error, debe usar la función PHP file_exists() para realizar una simple verificación antes de intentar acceder a un archivo o directorio, para verificar si el archivo o directorio existe.
<?php $file = "data.txt"; //Verificar si el archivo existe if(file_exists($file)){ // Intente abrir este archivo $handle = fopen($file, "r"); } else { echo "ERROR: File does not exist."; } ?>Prueba a ver‹/›
Consejo:Las operaciones de archivos y directorios son fáciles de cometer errores. Por lo tanto, es una buena costumbre implementar algún tipo de verificación de errores, de modo que si ocurre un error, su script pueda manejarlo elegantemente. ConsulteManejo de errores en PHPtutoriales.
Después de usar el archivo, debe cerrarlo. La función fclose() se utiliza para cerrar archivos, como se muestra en el siguiente ejemplo:
<?php $file = "data.txt"; //Verificar si el archivo existe if(file_exists($file)){ //Abrir el archivo a leer $handle = fopen($file, "r") or die("ERROR: No se puede abrir el archivo."); /* Aquí hay algunos códigos que se deben ejecutar */ //Cerrando el puntero de archivo fclose($handle); } else { echo "ERROR: File does not exist."; } ?>Prueba a ver‹/›
Nota:Aunque PHP cerrará automáticamente todos los archivos abiertos al finalizar el script, es mejor cerrar los archivos después de completar todas las operaciones.
Ahora que ya ha aprendido cómo abrir y cerrar archivos, en la próxima sección aprenderá cómo leer datos de un archivo. PHP tiene varias funciones para leer datos de archivos. Puede usar una sola operación para leer todo el archivo desde un carácter.
La función fread() se puede usar para leer un número específico de caracteres de un archivo. Puede usar la sintaxis básica de esta función.
fread(file handle, length in bytes)
Esta función acepta dos parámetros-El puntero de archivo y la cantidad de bytes a leer. El siguiente ejemplo lee desde el archivo "data.txt".20 bytes, incluyendo los espacios. Supongamos que el archivo "data.txt" contiene un texto "The quick brown fox jumps over the lazy dog.".
<?php $file = "data.txt"; //Verificar si el archivo existe if(file_exists($file)){ //Abrir el archivo a leer $handle = fopen($file, "r") or die("ERROR: No se puede abrir el archivo."); //Leer una cantidad fija de bytes desde el archivo $content = fread($handle, "20); //Cerrar el puntero del archivo fclose($handle); //Mostrar el contenido del archivo echo $content; } else { echo "ERROR: File does not exist."; } ?>Prueba a ver‹/›
El ejemplo anterior producirá la siguiente salida:
The quick brown fox
La función fread() puede usarse junto con la función filesize() para leer todo el archivo de una vez. La función filesize() tiene la función de: devolver el tamaño del archivo en bytes.
<?php $file = "data.txt"; //Verificar si el archivo existe if(file_exists($file)){ //Abrir el archivo a leer $handle = fopen($file, "r") or die("ERROR: No se puede abrir el archivo."); //Leiendo todo el archivo $content = fread($handle, filesize($file)); //Cerrando el puntero de archivo fclose($handle); //Mostrar el contenido del archivo echo $content; } else { echo "ERROR: File does not exist."; } ?>Prueba a ver‹/›
El ejemplo anterior producirá la siguiente salida:
The quick brown fox jumps over the lazy dog.
La manera más sencilla de leer todo el contenido de un archivo en PHP es usar la función readfile(). Esta función permite leer el contenido del archivo sin necesidad de abrirlo. El siguiente ejemplo generará la misma salida que el anterior:
<?php $file = "data.txt"; //Verificar si el archivo existe if(file_exists($file)){ //Leer y mostrar todo el archivo readfile($file) or die("ERROR: No se puede abrir el archivo."); } else { echo "ERROR: File does not exist."; } ?>Prueba a ver‹/›
El ejemplo anterior producirá la siguiente salida:
The quick brown fox jumps over the lazy dog.
Otra manera de leer todo el contenido del archivo sin abrirlo es usar la función file_get_contents(). Esta función acepta el nombre y la ruta del archivo y lee todo el archivo en una variable de cadena. A continuación, se muestra un ejemplo:
<?php $file = "data.txt"; //Verificar si el archivo existe if(file_exists($file)){ // Leer todo el archivo en una cadena $content = file_get_contents($file) or die("ERROR: No se puede abrir el archivo."); //Mostrar el contenido del archivo echo $content; } else { echo "ERROR: File does not exist."; } ?>Prueba a ver‹/›
Otra manera de leer todos los datos del archivo usando la función file() de PHP. Su funcionalidad es similar a la función file_get_content(), pero devuelve el contenido del archivo como un array de líneas, en lugar de como una única cadena. Cada elemento del array correspondiente a una línea en el archivo.
Para procesar los datos del archivo, necesita usarbucle foreachRecorrer el array. Este es un ejemplo que lee el archivo en un array y luego lo muestra con un bucle:
<?php $file = "data.txt"; //Verificar si el archivo existe if(file_exists($file)){ //Leer todo el archivo en un array $arr = file($file) or die("ERROR: Cannot open the file."); foreach($arr as $line){ echo $line; } } else { echo "ERROR: File does not exist."; } ?>Prueba a ver‹/›
Del mismo modo, puede usar la función fwrite() de PHP para escribir datos en un archivo o añadir a un archivo existente. La sintaxis básica de la función se puede expresar de la siguiente manera:
fwrite(puntero de archivo, cadena)
La función fwrite() acepta dos parámetros: el puntero de archivo y la cadena de datos que se escribirán, como se muestra en el siguiente ejemplo:
<?php $file = "note.txt"; //La cadena de datos a escribir $data = "The quick brown fox jumps over the lazy dog."; //Abrir el archivo para escritura $handle = fopen($file, "w") or die("ERROR: Cannot open the file."); //Escribir datos en el archivo fwrite($handle, $data) or die("ERROR: Cannot write the file."); //Cerrar el puntero de archivo fclose($handle); echo "Los datos se han escrito con éxito en el archivo."; ?>
En el ejemplo anterior, si el archivo "note.txt" no existe, PHP lo creará automáticamente y escribirá los datos. Sin embargo, si el archivo "note.txt" ya existe, PHP borrará el contenido del archivo (si hay alguno) antes de escribir nuevos datos, pero si solo desea añadir datos al archivo y mantener el contenido existente, utilice el ejemplo anterior.Modo a en lugar de w.
Otra forma es utilizar la función file_put_contents(). Es la función correspondiente a file_get_contents(), que ofrece una manera sencilla de escribir datos en un archivo sin necesidad de abrirlo. La función acepta el nombre y la ruta del archivo y los datos que se escribirán en el archivo. Aquí hay un ejemplo:
<?php $file = "note.txt"; //La cadena de datos a escribir $data = "The quick brown fox jumps over the lazy dog."; //Escribir datos en el archivo file_put_contents($file, $data) or die("ERROR: Cannot write the file."); echo "Los datos se han escrito con éxito en el archivo."; ?>
Si el archivo especificado en file_put_contents() ya existe, PHP lo sobrescribirá por defecto. Si desea mantener el contenido del archivo, puede pasar el marcador especial FILE_APPEND como tercer parámetro a la función file_put_contents(). Simplemente añadirá nuevos datos al archivo sin sobrescribirlo. Aquí hay un ejemplo:
<?php $file = "note.txt"; //La cadena de datos a escribir $data = "The quick brown fox jumps over the lazy dog."; //Escribir datos en el archivo file_put_contents($file, $data, FILE_APPEND) or die("ERROR: Cannot write the file."); echo "Los datos se han escrito con éxito en el archivo."; ?>
Puede usar la función rename() de PHP para renombrar archivos o directorios, como se muestra a continuación:
<?php $file = "file.txt"; //Verificar si el archivo existe if(file_exists($file)){ //Intentar renombrar el archivo if(rename($file, "newfile.txt")){ echo "El archivo se ha renombrado con éxito."; } else { echo "Error: No se puede renombrar el archivo."; } } else { echo "Error: El archivo no existe."; } ?>
Puede usar la función unlink() de PHP para eliminar archivos o directorios, como se muestra a continuación:
<?php $file = "note.txt"; //Verificar si el archivo existe if(file_exists($file)){ //Intentar eliminar el archivo if(unlink($file)){ echo "El archivo se ha eliminado con éxito."; } else { echo "Error: No se puede eliminar el archivo."; } } else { echo "Error: El archivo no existe."; } ?>
En el siguiente capítulo, aprenderemos sobre el uso de PHPde directorio o carpetaMás información.
La siguiente tabla resume algunas otras funciones útiles de sistema de archivos de PHP, que se pueden usar para leer y escribir archivos dinámicamente.
Función | Descripción |
---|---|
fgetc() | Leer un carácter a la vez. |
fgets() | Leer una línea a la vez. |
fgetcsv() | Leer una línea con valores separados por comas. |
filetype() | Devuelve el tipo de archivo. |
feof() | Verificar si se ha alcanzado el final del archivo. |
is_file() | Verificar si el archivo es un archivo convencional. |
is_dir() | Verificar si el archivo es un directorio. |
is_executable() | Verificar si el archivo es ejecutable. |
realpath() | Devuelve el nombre de la ruta absoluta normalizado. |
rmdir() | Eliminar un directorio vacío. |
Por favor, consulte la referencia del sistema de archivos de PHP para obtener otras funciones útiles de sistema de archivos de PHP.