Plantilla:PHP/Formularios/accionesFicheros
De WikiEducator
Revisión a fecha de 20:41 15 oct 2018; ManuelRomero (Discusión | contribuciones)
Contenido
Acceso a un fichero
- Son muchas las acciones que podemos hacer con los ficheros
http://php.net/manual/es/book.filesystem.php
- Acciones típicas sobre un fichero
- Vamos a verlas según nuestras necesidades
- 1.-Crear un fichero para escribir en él
- Si no existe que se intenta crear
- Si sí que existe:
- Agregar cosas sin perder lo que había.
- Borrar lo que hubiera crearlo para escribir en él.
- 2.-Abrir un fichero para leer
- Si no existe dará un error
- Si sí que existe lo abrirá para obtener bytes de él
(: En ambos casos obtendremos un recurso descriptor del fichero para operarar con él)
Abrir un fichero
- Parar poder acceder a un fichero necesitamos tener una referencia a él (Tanto para escribir como para leer).
(: Recuerda que es el usuario apache el que ha de tener los permisos necesarios (leer(r),escribir (w), ejecutar (x))
$archivo = fopen($nombre_fichero,$modo)
- $archivo Va a ser la variable con la que vamos a poder gestionar el archvio. Será de tipo recurso, un objeto de una clase del sistema.
- $nombre_fichero Es el nombre del fichero. Nos movemos en ruta respecto a la ubiciación del script que se está ejecutando. Podemos indicar también la ruta
//Ruta absoluta $archivo = fopen('/var/www/html/log.txt',$modo); //Ruta relativa al directorio donde se encuentra el proyecto $archivo = fopen('log.txt',$modo);
- $modo Es el modo de apertura (lectura, creación, añadir )· Hay varios modos
- r => Lectura.
- w => Escritura (Trunca el contenido).
- a => append o añadir.
- Una vez abierto vamos a ver cómo leer o escribir de/en él.
|
|
|
r | Lee un fichero desde el principio. | Se abre el fichero sólo para leer. Sitúa el cursor al principio del archivo. Si el fichero no existe o no hay permisos de lectura retorno false. |
r+ | Abre el fichero para lectura y permite la escritura. | Abre el archivo para lectura y escritura. Sitúa el cursor o puntero al principio del archivo. Si el fichero no existe o no hay permisos de lectura retorno false. |
w | Escribe un archivo y corta su contenido. | Abre el fichero sólo para escribir. Sitúa el puntero al principio y perdiéndose cualquier contenido que hubiera si existía y contenía datos. Si el archivo no existe, intenta crearlo, retornando false si no ha podido. |
w+ | Escribe un archivo desde el principio, corta su contenido, y permite la lectura. | Abre un archivo para lectura y escritura. Sitúa el puntero al principio dejando eliminando el contenido del archivo si hubiera algo. Si el archivo no existe, intenta crearlo. |
a | Abre el fichero en modo añadir . | Abierto sólo en escritura. Sitúa el puntero al final del archivo. Si el archivo no existe, intenta crearlo. |
a+ | Abre el fichero en modo lectura y añadir . | Se abre el archivo para lectura y escritura. Sitúa el puntero al final del archivo. Si el archivo no existe, intenta crearlo. |
Leer de un fichero
- Podemos realizar una lectura de su contenido por partes
String fread ($fichero, $leng);
- Leemos de un fichero la longuitd en bytes que indique el segundo parámetro
- No será algo habitual pero en alguna ocasión puede venir bien
- Podemos obtener todo el contenido de un fichero.
- Para este cometido tenemos dos funciones
array file($fichero)
- la función file()Esta función devuelve el contenido del fichero como un array indexado de cada una de sus líneas.
string get_file_content($fichero).
- la función get_file_contents() retorna el contenido del fichero como un string.
echo "<div class='fichero'>"; echo "<h2>Fichero index.php </h2>"; echo "<pre class=\"prettyprint\">".htmlspecialchars($index)."</pre>"; echo "<hr />"; echo "</div> ";
Escribir en un fichero
fwrite($fichero, "texto para escribir");
Acceso a un directorio
<?php $base = "/var/www/"; $dir = scandir($base); var_dump($dir); foreach ($dir as $directorio){ if (is_dir("$base$directorio")){ if ($directorio!="." && $directorio!=".."){ $ficheros = scandir ($directorio); if (in_array("index.php", $ficheros)){ $txt .= "<h2><a href=$directorio/index.php>$directorio</a></h2>"; } } } } ?> <!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php echo $txt; ?> </body> </html>