Diferencia entre revisiones de «Plantilla:PHP/Formularios/accionesFicheros»

De WikiEducator
Saltar a: navegación, buscar
(Abrir un fichero)
(Leer de un fichero)
Línea 70: Línea 70:
  
 
====Leer de un fichero====
 
====Leer de un fichero====
 +
*Vamos a ver tres formas de leer un fichero:
 +
#Leer  línea a línea.
 +
#Leer un número de bytes concretos.
 +
#Leer todo el contenido del fichero.
 +
;Leer el fichero línea a línea
 +
<source lang=php>
 +
string fgets($fichero)
 +
</source>
 +
*Ejemplo
 +
<source lang=php>
 +
$f = fopen=("datos.txt", "r");
 +
  /Mientras haya un línea que obtener, leo la línea
 +
  while($linea = fgets($f))
 +
  {
 +
$texto .= $linea "<br>";
 +
        echo "<h2>Línea número $n, contendido <strong>$linea</h2>
 +
 +
  }
 +
  fclose($fh);
 +
  echo "Texto leído <br /> $texto ";
 +
</source>
 +
;Leer por partes
 
*Podemos realizar una lectura de su contenido por partes
 
*Podemos realizar una lectura de su contenido por partes
 +
<source lang=php>
 
String fread ($fichero, $leng);
 
String fread ($fichero, $leng);
 +
</source>
 
*Leemos de un fichero la longuitd en bytes que indique el segundo parámetro
 
*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
 
*No será algo habitual pero en alguna ocasión puede venir bien
 +
;Leer todo el fichero
 
*Podemos obtener todo el contenido de un fichero.
 
*Podemos obtener todo el contenido de un fichero.
 
*Para este cometido tenemos dos funciones
 
*Para este cometido tenemos dos funciones
 +
<source lang="php">
 
  array file($fichero)
 
  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.
+
</source>
string get_file_content($fichero).
+
*la función '''file()''' Devuelve el contenido del fichero como un array indexado de cada una de sus líneas.
 
{{MRM_Actividad|Title=usando la función file()|
 
{{MRM_Actividad|Title=usando la función file()|
 
Crea un fichero con nombres en cada línea
 
Crea un fichero con nombres en cada línea
Línea 92: Línea 118:
 
*Usando file visualiza de cada nombre  
 
*Usando file visualiza de cada nombre  
 
}}
 
}}
 +
*Otra función  que retorna todo el contenidos
 +
<source lang=php>
 +
string get_file_content($fichero).
 +
</source>
 
*la función '''get_file_contents()''' retorna  el contenido del fichero como un string.
 
*la función '''get_file_contents()''' retorna  el contenido del fichero como un string.
 
<source lang=php>
 
<source lang=php>

Revisión de 21:18 15 oct 2018

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

  • Vamos a ver tres formas de leer un fichero:
  1. Leer línea a línea.
  2. Leer un número de bytes concretos.
  3. Leer todo el contenido del fichero.
Leer el fichero línea a línea
 
string fgets($fichero)
  • Ejemplo
 $f = fopen=("datos.txt", "r");
  /Mientras haya un línea que obtener, leo la línea
  while($linea = fgets($f))
  {
	 $texto .= $linea "<br>";
         echo "<h2>Línea número $n, contendido <strong>$linea</h2>
 
  }
   fclose($fh);
  echo "Texto leído <br /> $texto ";
Leer por partes
  • 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
Leer todo el fichero
  • Podemos obtener todo el contenido de un fichero.
  • Para este cometido tenemos dos funciones
 array file($fichero)
  • la función file() Devuelve el contenido del fichero como un array indexado de cada una de sus líneas.


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



  • Otra función que retorna todo el contenidos
 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>