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

De WikiEducator
Saltar a: navegación, buscar
(Leer de 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)
</source>
+
*la función '''file()'''Esta función devuelve el contenido del fichero como un array indexado de cada una de sus líneas.
*la función '''file()''' Devuelve el contenido del fichero como un array indexado de cada una de sus líneas.
+
string get_file_content($fichero).
 
{{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 118: Línea 92:
 
*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 20:24 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

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