Actualizado el miércoles, 8 mayo, 2024

En este capítulo se explicarán las siguientes funciones relacionadas con los archivos:

  • Abrir un archivo
  • Lectura de un archivo
  • Escribir un archivo
  • Cierre de un archivo

Apertura y cierre de archivos

La función fopen() de PHP se utiliza para abrir un archivo. Requiere dos argumentos que indiquen primero el nombre del archivo y luego el modo en el que operar.

Los modos de archivo se pueden especificar como una de las seis opciones de esta tabla.

Sr.NoModo y propósito
1r
Abre el archivo solo para lectura.Coloca el puntero de archivo al principio del archivo.
2r+
Abre el archivo para leer y escribir.Coloca el puntero de archivo al principio del archivo.
3w:
Abre el archivo solo para escritura.Coloca el puntero de archivo al principio del archivo.y trunca el archivo a una longitud cero. Si los archivos noexist, entonces intenta crear un archivo.
4w+
Abre el archivo solo para leer y escribir.Coloca el puntero de archivo al principio del archivo.y trunca el archivo a una longitud cero. Si los archivos noexist, entonces intenta crear un archivo.
5a
Abre el archivo solo para escritura.Coloca el puntero de archivo al final del archivo.Si files no existe, intenta crear un archivo.
6a+
Abre el archivo solo para leer y escribir.Coloca el puntero de archivo al final del archivo.Si files no existe, intenta crear un archivo.

Si se produce un error al intentar abrir un archivo, fopen devuelve un valor de false, de lo contrario, devuelve un puntero de archivo que se utiliza para leer o escribir en ese archivo.

Después de realizar un cambio en el archivo abierto, es importante cerrarlo con la función fclose(). La función fclose() requiere un puntero de archivo como argumento y, a continuación, devuelve true cuando el cierre se realiza correctamente o false si falla.

Lectura de un archivo

Una vez que se abre un archivo usando la función fopen(), se puede leer con una función llamada fread(). Esta función requiere dos argumentos. Estos deben ser el puntero del archivo y la longitud del archivo expresada en bytes.

La longitud de los archivos se puede encontrar usando la función filesize() que toma el nombre del archivo como argumento y devuelve el tamaño del archivo expresado en bytes.

Así que estos son los pasos necesarios para leer un archivo con PHP.

  • Abra un archivo usando la función fopen().
  • Obtenga la longitud del archivo usando la función filesize().
  • Lea el contenido del archivo usando la función fread().
  • Cierre el archivo con la función fclose().

Ejemplo

En el ejemplo siguiente se asigna el contenido de un archivo de texto a una variable y, a continuación, se muestra ese contenido en la página web.

<html>
<head>
   <title>Reading a file using PHP</title>
</head>
<body>
   <?php
      $filename = "tmp.txt";
      $file = fopen( $filename, "r" );

      if( $file == false ) {
         echo ( "Error in opening file" );
         exit();
      }

      $filesize = filesize( $filename );
      $filetext = fread( $file, $filesize );
      fclose( $file );

      echo ( "File size : $filesize bytes" );
      echo ( "<pre>$filetext</pre>" );
   ?>
</body>
</html>

Producirá el siguiente resultado:

Escribir un archivo

Se puede escribir un nuevo archivo o se puede agregar texto a un archivo existente usando la función fwrite() de PHP. Esta función requiere dos argumentos que especifiquen un puntero de archivo y la cadena de datos que se va a escribir. Opcionalmente, se puede incluir un tercer argumento entero para especificar la longitud de los datos que se van a escribir. Si se incluye el tercer argumento, la escritura se detendrá después de que se haya alcanzado la longitud especificada.

Ejemplo

En el ejemplo siguiente se crea un nuevo archivo de texto y, a continuación, se escribe un breve encabezado de texto dentro de él. Después de cerrar este archivo, se confirma su existencia usando la función file_exist() que toma el nombre del archivo como argumento

<?php
   $filename = "/home/user/guest/newfile.txt";
   $file = fopen( $filename, "w" );
   
   if( $file == false ) {
      echo ( "Error in opening new file" );
      exit();
   }
   fwrite( $file, "This is  a simple test\n" );
   fclose( $file );
?><html><head><title>Writing a file using PHP</title></head><body><?php
      $filename = "newfile.txt";
      $file = fopen( $filename, "r" );

      if( $file == false ) {
         echo ( "Error in opening file" );
         exit();
      }

      $filesize = filesize( $filename );
      $filetext = fread( $file, $filesize );

      fclose( $file );

      echo ( "File size : $filesize bytes" );
      echo ( "$filetext" );
      echo("file name: $filename");
   ?></body></html>

Producirá el siguiente resultado:

Hemos cubierto todas las funciones relacionadas con la entrada y salida de archivos en el capítulo **Función del sistema de archivos PHP.