MANEJO DE ARCHIVOS Y DIRECTORIOS
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.
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().