Plantilla:PHP/Formularios/accionesFicheros

De WikiEducator
Saltar a: navegación, buscar

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

(Comment.gif: 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).

(Comment.gif: 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
  1. 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.


Parámetro
Acción
Descripción
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. Se abre sólo para escribir. Sitúa el puntero al prinicpio ydeja el contenido del archivo a nada antes de escribir. Si el archivo no existe, intenta crearlo.
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 a nada el contenido del archivo. Si el archivo no existe, intenta crearlo.
a Se adjunta al final del archivo. Abierto sólo en escritura, Sitúa el puntero al final del archivo. Si el archivo no existe, intenta crearlo.
a+ Se adjunta al final del archivo y permite lectura. 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).


Icon activity.jpg
usando la función file()

Crea un fichero con nombres en cada línea

María Ruiz
Mercedes Naranjo
Manuel Romero
Sara Rodríguez
Jorge Martínez
Eduarlo Laborda
Nieves Rodera
  • Usando file visualiza de cada nombre



  • 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>