MANEJO DE ARCHIVOS Y DIRECTORIOS

r

MANEJO DE ARCHIVOS Y DIRECTORIO.

7.FUNCIONES DE DIRECTORIOS

Hay un total de 9 funciones disponibles:

CHDIR

Cambia el directorio actual al directorio $directory.

bool chdir (string $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

SCANDIR

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

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

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] => .

)

*/

CHROOT

Cambia el directorio raíz al directorio $directory.

bool chroot (string $directory)

OPENDIR

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

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

READDIR

Lee una entrada desde un gestor de directorio.

string readdir ([ resource $dir_handle])

CLOSEDIR

Cierra un gestor de directorio abierto _$dirhandle.

void closedir ([resource $dir_handle ]

REWINDDIR

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

void rewinddir ([resource $dir_handle])

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] . "<br>"; // Número de enlaces, 1

echo $datos[7] . "<br>"; // Tamaño en bytes, 85

echo $datos[8] . "<br>"; // Momento de último acceso, 1444138104

echo $datos[9] . "<br>"; // Momento de última modificación, 1444138251

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.

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

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

FINFO_FILE

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

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

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

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

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) . "<br>"; // Devuelve 0

// Colocamos el apuntador en la posicion 10:

fseek($fp, 10);

// Mostramos la posición actual:

echo ftell($fp) . "<br>"; // Devuelve 10

// Se puede indicar una posición sin contenido:

fseek($fp, 1000);

echo ftell($fp) . "<br>"; // Devuelve 1000

// Para ir al final del archivo se emplea un tercer argumento en fseek:

fseek($fp, 0, SEEK_END);

echo ftell($fp) . "<br>"; // Devuelve 18

// Para mover el apuntador a una posición relativa se emplea SEEK_CUR:

fseek($fp, -5, SEEK_CUR);

echo ftell($fp) . "<br>"; // Devuelve 13

4. CERRAR UN ARCHIVO

cerrar el archivo (no es obligatorio pero se recomienda):

fclose($fp);

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.

1. ABRIR UN ARCHIVO

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");

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.

r

modos de acceso existentes para fopen.

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().

Topic principal