Categorías: Todo - directorios - funciones - archivos - secuencia

por ANNY GABRIELA MORENO VALDERRAMA hace 4 años

442

MANEJO DE ARCHIVOS Y DIRECTORIOS

El texto trata sobre las diversas funciones disponibles para el manejo de archivos y directorios en un entorno de programación. Se describen nueve funciones específicas, cada una con su propósito y uso particular.

MANEJO DE ARCHIVOS Y DIRECTORIOS

MANEJO DE ARCHIVOS Y DIRECTORIOS

MANEJO DE ARCHIVOS Y DIRECTORIO.


Topic principal

2. LEER UN ARCHIVO

Cuando se abre el archivose a lee y guarda su contenido en una variable con fread():
$file = "miarchivo.txt"; $fp = fopen($file, "r"); $contents = fread($fp, filesize($file));

$contents guardará el contenido que obtengamos con la función fread().

1. ABRIR UN ARCHIVO

MODOS DE ACCESO EXISTENTES PARA FOPEN()
*r Apertura para lectura. Puntero al principio del archivo *r+ Apertura para lectura y escritura. Puntero al principio del archivo *w Apertura para escritura. Puntero al principio del archivo. Si no existe se intenta crear. *w+ Apertura para lectura y escritura. Puntero al principio del archivo. Si no existe se intenta crear. *a Apertura para escritura. Puntero al final del archivo. Si no existe se intenta crear. *a+ Apertura para lectura y escritura. Puntero al final del archivo. Si no existe se intenta crear. *x Creación y apertura para sólo escritura. Puntero al principio del archivo. Si el archivo ya existe dará error E_WARNING. Si no existe se intenta crear. *x+ Creación y apertura para lectura y escritura. Mismo comportamiento que x. *c Apertura para escritura. Si no existe se crea. Si existe no se sobre escribe ni da ningún error. Puntero al principio del archivo. *c+ Apertura para lectura y escritura. Mismo comportamiento que C.

modos de acceso existentes para fopen.

En PHP los archivos se abren con la función FOPEN().
La función devuelve un puntero en el archivo si es satisfactoria o cero si no lo es.

Su sintaxis es : $fp=fopen("miarchivo.txt","r");

Es frecuente usar la función en condicion: if(!$fp=fopen("miarchivo.txt","r")) { echo"no se ha podido abrir el archivo"; }

Tambien se puede usar un URL externa: $fp("http:/localhost:8000"."r");

3. ESCRIBIR EN UN ARCHIVO

La forma más básica de escribir en un archivo es utilizar la función fwrite() o fputs(), que es su alias:
$file = "miarchivo.txt"; $texto = "Hola que tal"; $fp = fopen($file, "w"); fwrite($fp, $texto); fclose($fp);

el modo w, permite escribir sobre escribiendo el archivo.

Para limitar la longitud de datos que queremos escribir :

$file = "miarchivo.txt"; $texto = "Hola que tal"; $fp = fopen($file, "w"); fwrite($fp, $texto, 4);

Si el archivo miarchivo.txt no existe, se creará automáticamente con el modo w de la función fopen.

4. CERRAR UN ARCHIVO

cerrar el archivo (no es obligatorio pero se recomienda):
fclose($fp);

5. PUNTERO DE ARCHIVO

Es una variable que apunta a un archivo en concreto, y normalmente se obtiene cuando se abre con fopen().
La función feof() Se utiliza cuando se recorre un archivo línea por línea o para la lectura de grandes archivos, mediante un condicional:

$archivo = "miarchivo.txt"; // Abrimos el archivo $fp = fopen($archivo, "r"); // Loop que parará al final del archivo, cuando feof sea true: while(!feof($fp)){ echo fread($fp, 4092); }

Para mover el puntero se puede usar la función fseek(), y para encontrar la posición de un puntero dado ftell().

$fp = fopen($file, "r"); // Si lo hemos abierto con r, siempre empieza desde el principio: echo ftell($fp) . "
"; // Devuelve 0 // Colocamos el apuntador en la posicion 10: fseek($fp, 10); // Mostramos la posición actual: echo ftell($fp) . "
"; // Devuelve 10 // Se puede indicar una posición sin contenido: fseek($fp, 1000); echo ftell($fp) . "
"; // Devuelve 1000 // Para ir al final del archivo se emplea un tercer argumento en fseek: fseek($fp, 0, SEEK_END); echo ftell($fp) . "
"; // Devuelve 18 // Para mover el apuntador a una posición relativa se emplea SEEK_CUR: fseek($fp, -5, SEEK_CUR); echo ftell($fp) . "
"; // Devuelve 13

6. OBTENER INFORMACIÓN DE UN ARCHIVO

Se puede obtener información de un archivo además de su contenido: tamaño, última vez que se ha accedido o modificado, número de links, etc. Para obtener esta información es con la función stat()
$file = "miarchivo.txt"; $texto = "Todos somos muy ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas."; $fp = fopen($file, "w"); fwrite($fp, $texto); $datos = stat($file); echo $datos[3] . "
"; // Número de enlaces, 1 echo $datos[7] . "
"; // Tamaño en bytes, 85 echo $datos[8] . "
"; // Momento de último acceso, 1444138104 echo $datos[9] . "
"; // Momento de última modificación, 1444138251

FINFO_FILE

string finfo::file ( resource $finfo, string $file_name = null [, int $options = FILEINFO_NONE [, resource $context = null ]] )

Para cerrar un recurso fileinfo abierto se utiliza _finfo_close()_.

_$filename el archivo del que se quiere obtener información.

El argumento $finfo es el recurso que se ha creado con _finfoopen.

FINFO_OPEN

resource finfo::__construct ([int $options = FILEINFO_NONE [, string $magic_file = NULL ]])

abre una base de datos mágica y la devuelve a su recurso.

$options, es una constante de fileinfo, también opcional.

_$magicfile es opcional, es el archivo de la base de datos mágica.

7.FUNCIONES DE DIRECTORIOS

Hay un total de 9 funciones disponibles:
REWINDDIR

Restablece la secuencia de directorio indicada por _$dirhandle al comienzo del directorio.

void rewinddir ([resource $dir_handle])

CLOSEDIR

Cierra un gestor de directorio abierto _$dirhandle.

void closedir ([resource $dir_handle ]

READDIR

Lee una entrada desde un gestor de directorio.

string readdir ([ resource $dir_handle])

OPENDIR

Abre un gestor de directorio para ser usado en llamadas posteriores como closedir(), readdir() y rewinddir().

resource opendir (string $path [, resource $context ] )

CHROOT

Cambia el directorio raíz al directorio $directory.

bool chroot (string $directory)

SCANDIR

array_scandir (string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )

El _$sortingorder indica el orden en que devolverá el listado: SCANDIR_SORT_ASCENDING (0), SCANDIR_SORT_DESCENDING (1) o SCANDIR_SORT_NONE (sin orden):

$directorio = "Slim"; $archivos = scandir($directorio, 1); print_r($archivos); /* Array ( [0] => View.php [1] => Slim.php [2] => Router.php [3] => Middleware [4] => LogWriter.php [5] => Log.php [6] => Http [7] => Helper [8] => Environment.php [9] => .. [10] => . ) */

Devuelve un array con los archivos y directorios que se encuentran en $directory.

GETCWD

Obtiene el directorio actual.

string getcwd ( void )

echo getcwd() . "\n"; // Directorio: /directorio/actual chdir('nuevo/directorio'); echo getcwd() . "\n"; // Directorio: /directorio/actual/nuevo/directorio

CHDIR

Cambia el directorio actual al directorio $directory.

bool chdir (string $directory)