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

De WikiEducator
Saltar a: navegación, buscar
(Acceso a un directorio)
(Abrir un fichero)
Línea 29: Línea 29:
 
</source>
 
</source>
  
*'''''$modo  ''''' Es el modo de apertura (lectura, creación, añadir )· Hay varios modos
+
*'''''$modo  ''''' Es el modo de apertura (lectura, creación, añadir )· Hay varios modos<br />
 
#;r => Lectura.
 
#;r => Lectura.
 
#;w => Escritura (Trunca el contenido).
 
#;w => Escritura (Trunca el contenido).
 
#;a => append o añadir.
 
#;a => append o añadir.
 
*Una vez abierto vamos a ver cómo leer o escribir de/en él.
 
*Una vez abierto vamos a ver cómo leer o escribir de/en él.
 +
 +
 +
 +
{| class="prettytable"
 +
|-
 +
| <center>'''Parámetro'''</center>
 +
| <center>'''Acción'''</center>
 +
| <center>'''Descripción'''</center>
 +
|-
 +
| '''r'''
 +
|Lee un fichero desde el principio.
 +
|Sólo abre el archivo para leer. Sitúa el cursos en el principio del archivo. Devuelve false si el archivo no existe.
 +
|-
 +
|r+
 +
|Lee el archivo desde el principio y permite la escritura.
 +
|Abre el archivo para lectura y escritura. Sitúa el puntero al principio del archivo. Devuelve false si el archivo no existe.
 +
|-
 +
|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====
 
====Leer de un fichero====

Revisión de 19:35 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
  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. Sólo abre el archivo para leer. Sitúa el cursos en el principio del archivo. Devuelve false si el archivo no existe.
r+ Lee el archivo desde el principio y permite la escritura. Abre el archivo para lectura y escritura. Sitúa el puntero al principio del archivo. Devuelve false si el archivo no existe.
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.
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>