Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    leggere file in sottodirectory

    ciao,

    mi trovo a dover leggere i dati in una sottodir: nella dir principale ci sono altre dir e i file da leggere si trovano in ciascuna di queste dir, ma non riesco a capire come fare..per leggere in una dir uso questo codice:

    Codice PHP:
    $directory="nome_dir_principale";

    print 
    "Import dati della directory: [b]".$directory."[/b]
    "
    ;

    $file_elaborati=0;
    $dati_inseriti=0;

    if (
    $handle opendir("$directory")) { // if principale
        
    while (false !== ($file readdir($handle))) {
            echo 
    "nome file: $file 
    "
    ;
    //        prende solo i file... escludendo le directory
            
    if (!is_dir($file)) {
    .... 
    come faccio a dirgli che trovata la prima dir ci deve entrare dentro e leggere da lì i file, quando ha letto tutti i file di quella dir deve risalire e passare alla seconda dir etc..fin quando non ha letto in tutte le dir.
    spero qualcuno mi può dare una mano..grazie..
    ciao..
    PeppePegasus

  2. #2
    c'è una discussione simile abbastanza recente, hanno risolto con una funzione ricorsiva...prova a dare un occhio ai post vecchi

  3. #3
    funzione ricorsiva... ti fai una funzione che dato un percorso di una cartella, faccia:

    1) per ogni cartella contenuta nella cartella data, richiama se stessa con la nuova cartella
    2) stampa i file della cartella

    in questo modo otterresti un effetto se non erro simile all'esplora risorse di microzoz... per far partire la ricorsione basta chimaare una volta la funzione passando la root da cui si vuol partire
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    ciao,

    ho trovato la soluzione con i while che mi pare funzioni..
    Codice PHP:
    if ($handle opendir("$directory")) { // if principale
        
    while (false !== ($file readdir($handle))) {
            echo 
    "nome file: $file 
    "
    ;
    //        prende solo i file... escludendo le directory
    //        if (!is_dir($file)) {
            
    if(($file != '.') && ($file != '..')){
                
    $directory2=$directory."/".$file;
    //            echo "nuova dir: $directory2 
    ";

                if (is_dir(
    $directory2)) {
                    if (
    $handle2 = opendir($directory2)) {
                        while (false !== (
    $file = readdir($handle2))) { 
    ho un altro problema..come si fa a leggere un file dopo un certo numero di righe? cioè ci sono 10 righe che non mi serve leggere dalla undicesima deve leggere...
    grazie..
    PeppePegasus

  5. #5

    ciao

    ciao,

    mi ritrovo il problema di cui ho parlato in questo post un po datato..vorrei ora invece di usare i cicli while per la verifica che i file esaminati non siano dir, usare un meccanismo che sia indipendente se nella dir in cui cerco i file ci sia 1 o 2 o piuttosto 4 sottodir che non mi servono.
    Qualcuno può darmi una indicazione sul post a cui mi si rimandava e riguardante le funzioni ricorsive? ho fatto qualche ricerca ma non sono riuscito a trovare quello che mi è stato indicato.
    grazie.
    ciao.
    PeppePegasus

  6. #6
    Queste sono due funzioni che avevo postato per un problema simile:
    Codice PHP:
    function read_dir_tree($folder) {
        
    $output = array();
        foreach ( 
    scandir($folder) as $item ) {
            if ( 
    $item == '.' OR $item == '..' )
                continue;
            
    $full_path "$folder/$item";
            if ( 
    is_dir($full_path) ) {
                
    $output[$item] = read_dir_tree($full_path);
            } else {
                
    $output[] = $full_path;
            }
        }
        return 
    $output;
    }

    function 
    read_dir_plain($folder) {
        
    $output = array();
        foreach ( 
    scandir($folder) as $item ) {
            if ( 
    $item == '.' OR $item == '..' )
                continue;
            
    $full_path "$folder/$item";
            if ( 
    is_dir($full_path) ) {
                
    $output array_merge($outputread_dir_plain($full_path));
            } else {
                
    $output[] = $full_path;
            }
        }
        return 
    $output;
    }

    print_r(read_dir_tree('/percorso/della/directory')); 
    La prima restituisce un array a n dimensioni che rispecchia la struttura delle directory, la seconda invece fornisce solo una lista "piatta" di tutti i file con il loro path.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.