ccc

Ficheros: Operaciones con ficheros (lectura, escritura, borrar, recorrer, etc)

// Pasar todo el contenido de un fichero a una variable
$fich = file_get_contents("fichero.txt");


// Para recorrer un fichero obtenido con file_get_contents
$contenidoTXT = file_get_contents("fichero.txt");
$lineasTXT = explode("\n", $contenidoTXT);
foreach ($lineasTXT as $linea) {
     echo $linea."<br>";
}


// Cómo saber si un fichero o un directorio existe físicamente
if (file_exists("mi_fichero.txt")) {
}


// Crear una carpeta si no existe
$carpeta = '/ruta/a/mi/carpeta';
if (!file_exists($carpeta)) {
    mkdir($carpeta, 0777, true);
}

// ************ DIFERENTES FORMAS DE ABRIR/CREAR UN FICHERO ************

"r": Sólo lectura
"r+":  Lectura y escritura
"w":  Sólo escritura
"w+":  Lectura y escritura. Suprime el contenido anterior si se escribe. El archivo es creado si no existe.
"a":  Sólo escritura. El archivo es creado si no existe y el puntero se coloca al final.
"a+":  Lectura y escritura. El archivo es creado si no existe y el puntero se coloca al final.

Un ejemplo:

<?php
$fp = fopen("mi_texto.txt", "w+");
?>



// *********** LECTURA *******************

// Leer fichero línea a línea
$fp = fopen("mi_texto.txt", "r+");
while(!feof($fp)){
  $linea = fgets($fp);
  echo $linea."<br>";
}
fclose($fp);

// Leer fichero carácter a carácter
$fp = fopen("mi_texto.txt", "r+");
while(!feof($fp)){
  $caracter = fgets($fp, 1);
  echo $caracter."<br>";
}
fclose($fp);

// También se podría ir leyendo por ejemplo de 20 en 20 caracteres
$fp = fopen("mi_texto.txt", "r+");
while(!feof($fp)){
  $texto = fgets($fp, 20);
  echo $texto."<br>";


fclose($fp);

// Leer un fichero de texto alojado en un FTP
$archivo = fopen("ftp://user:password@ftp.server.com/html/probando.txt", "r");
if ($archivo) { ... }

// *********** ESCRITURA *******************
$fp = fopen("mi_texto.txt", "w+");
fwrite($fp, "hola mundo");
fclose($fp);

// también se puede especificar el número de espacios que debe contener lo que se escriba
fwrite($fp, $dni, 9); // si ocupase menos de 9 caracteres lo rellena con espacios en blanco

// Si queremos añadir un <intro> para cada línea que escribamos
fwrite($fp, "hola"..PHP_EOL);

// En vez de fwrite se puede utilizar también fputs
fputs($fp ,"en un lugar de la Mancha".PHP_EOL);

// ************* COPIAR *********************
function copiar_todo($src, $dst) {
$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) ) {
    if (( $file != '.' ) && ( $file != '..' )) {
       if ( is_dir($src . '/' . $file) ) {
          copiar_todo($src . '/' . $file,$dst . '/' . $file);
       }
       else {
            copy($src . '/' . $file,$dst . '/' . $file);
       }
   }
}
closedir($dir);
}

copiar_todo(carpeta_prueba", "./carpeta_destino");

// ************* BORRAR *********************
function borrar_carpeta($carpeta) {
   foreach(glob($carpeta . "/*") as $archivos_carpeta) {
       // echo $archivos_carpeta;
       if (is_dir($archivos_carpeta)) {
           borrar_carpeta($archivos_carpeta);
       }
       else {
          unlink($archivos_carpeta);
      }
 }
 rmdir($carpeta);
}
borrar_carpeta("temp_zip");

Para borrar una estructura de directorios que tenga ficheros ocultos:

function SureRemoveDir($dir, $DeleteMe) {
    if(!$dh = @opendir($dir)) return;
    while (false !== ($obj = readdir($dh))) {
        if($obj=='.' || $obj=='..') continue;
        if (!@unlink($dir.'/'.$obj)) SureRemoveDir($dir.'/'.$obj, true);
    }
    if ($DeleteMe){
        closedir($dh);
        @rmdir($dir);
    }
}

SureRemoveDir($carpeta, true);

// **************** RECORRER ********************

Obtener el primer directorio de otro directorio:
glob("dirPrincipal/" . $subDir."/*")[0]

// Recorrer solo los directorios de una carpeta
foreach(glob("./miCarpeta/*", GLOB_ONLYDIR) as $folder) {
     echo $folder."<br>"; // saca toda la ruta
}

// Recorrer tanto los directorios como los ficheros
foreach(glob("./miCarpeta/*") as $folder) {
     echo $folder."<br>";  // saca toda la ruta
}

No hay comentarios:

Publicar un comentario