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

    leggere un file di testo senza conoscere il nome del file

    Ciao raga.
    Vorrei sapare se è possibile aprire da php un file di testo senza conoscere il nome del file ma in base alla data di creazione. in pratica, ciò che devo fare si basa su questo "schema": vengono acquisiti da una macchina dei dati e memorizzati su un file (tante sn le acquisizioni, tanti sn i file di testo) che vengono salvati sul mio web server. ora io dovrei aprire questi file senza sapere quale nome hanno ma in base alla cronologia di salvataggio, e fare delle operazioni di lettura e cancellazione del file per liberare memoria. é possibile tutto questo? nn lasciatemi solo .


  2. #2
    Utilizza http://www.php.net/dir per elencare i file nella cartella e utilizzare http://www.php.net/stat etc. per ottenere la data che ti interessa.

  3. #3
    mi è poco chiaro...
    io nn voglio elencare tutto ciò che ho nella directory, ma aprire direttamente un file non per nome ma per data di creazione. sostanzialmente vorrei sapere se è possibile utilizzare le funzioni fopen, fread ecc... oppure devo cambiare direzione. comunque grazie per l'aiuto che mi stai dando...

  4. #4
    nessuno mi aiuta???

  5. #5
    Se apri il manuale e leggi come funzione fopen ti accorgerai che il primo parametro è string filename, ossia per aprire un file DEVI conoscerne il nome. Ora, visto che dici di non conoscere il nome del file, ma di conoscerne solo la data di creazione, come fai a utilizzare fopen? Semplice, elenchi tutti i nomi di file della cartella, fai un ciclo e per ogni file presente esegui stat (o simile) per ottenere la data di modifica. Poi confronti la data di modifica con la data del file che vuoi aprire, ed ecco che hai trovato il nome del file che ti serve.

  6. #6
    Ho fatto ciò che hai detto ed avevi ragione. Lo mostro per chi volesse usufruirne

    Codice PHP:
    <?
    if ($cartella opendir('C:\Programmi\...\...\')) /*mettiamo la directory giusta*/
    {
        echo "File:\n";
       $i=0;
       while (false !== ($file = readdir($cartella))) 
       { 
       $lunghezza=strlen($file);
       $lunghezza-=3;
       $estensione=substr($file,$lunghezza);
       if ($estensione=="txt")
          { echo "$file\n
    ";
            $proprieta=stat($file);
            $datasalva=$proprieta[9];
            echo "
    "; 
            $i+=1;}
       }
       closedir($cartella); 
    }
    ?>
    con output:

    Nuovo Documento di testo (2).txt
    1207586418
    Nuovo Documento di testo (3).txt
    1207586421
    Nuovo Documento di testo.txt
    1207586414

    A questo punto ciò che nn riesco a fare è un array associativo dove la chiave deve essere il formato unix timestamp ($datasalva) e l'attributo il nome del file ($file). Voglio fare cosi perchè dopo devo implementare una function che mi prenda la chiave + datata e mi faccia aprire il file corrispondete in modo automatico per fare delle operazioni su file txt per salvare i dati nel db. Spero che qualcuno abbia capito e mi possa dare una mano nel come fare e dove andare ad operare nel codice affinchè raggiunga il mio obiettivo. Ciao

  7. #7
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Codice PHP:
    $list=array();
    $path="tua cartella";
    $files=glob("$path/*.txt");
    foreach (
    $files as $file) {$list[filemtime($file)]=$file;}
    ksort($files);

    echo 
    "<pre>";
    print_r($list); 
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  8. #8
    prima di tutto grazie della risposta però vorrei capire come faccio a mettere insieme i due codici. ho messo il tuo pezzo di seguito al mio e mi esce questo output:

    File:
    Nuovo Documento di testo (2).txt
    1207586418
    Nuovo Documento di testo (3).txt
    1207586421
    Nuovo Documento di testo.txt
    1207586414
    Array

    Array
    (
    )

    Quindi mi restituisce Array ()... Come posso fare?

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ciao

    il codice che ti ho fornito io è corretto...

    se per esempio lo metti nella stessa cartella in cui ci sono i files .txt (txt minuscolo eh!!)
    $path è un . ,

    se per esempio invece hai una sotto carterlla file $path è ./file
    Codice PHP:
    $list=array();
    $path=".";
    $files=glob("$path/*.txt");
    foreach (
    $files as $file) {$list[filemtime($file)]=$file;}
    ksort($list);

    echo 
    "<pre>";
    print_r($list); 
    ecco un esempio sul mio pc di quello che mi restituisce con estensione .php

    Codice PHP:
    Array
    (
        [
    1165781680] => ./info.php
        
    [1191538824] => ./pippo.php
        
    [1194640938] => ./dinam.php
        
    [1194656170] => ./abc.php
        
    [1194833129] => ./data.php
        
    [1197339781] => ./winb.php
        
    [1197412705] => ./md5.php
        
    [1197815790] => ./parole.php
        
    [1201348274] => ./test_sess.php
        
    [1202671749] => ./iprange.php
        
    [1207676226] => ./test.php

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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 © 2025 vBulletin Solutions, Inc. All rights reserved.