Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di mhidy
    Registrato dal
    Jan 2005
    Messaggi
    28

    [java] Leggere le cartelle e file di sistema per creare un XML

    Salve sono nuovo di qui.... quindi se ho fatto qualche errore di impostazione della domanda perdonatemi... ^_^

    Ascoltate vorrei creare, attraverso java, un XML che rappresenti l'esplora risorse di windows, che restituisca cioè la gerarchia tra le cartelle ed i file del proprio Hard Disk.... solo che non so come posso leggere e scorrere le cartelle, ed i file contenute in esse, del mio HD. Inoltre se possibilie vorrei sapere come faccio a prelevare il nome della cartella/file per usarlo come descrizione del tag...

    Grazie
    Fa marcia indietro e uccide il cane, fa marcia avanti e uccide il gatto (Corriere della Sera, 1992)
    Si è spento l'uomo che si è dato fuoco (Giornale di Sicilia, 1998)

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    tanta roba. Io comincerei da qui per quanto riguarda la gestione dei file.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it L'avatar di mhidy
    Registrato dal
    Jan 2005
    Messaggi
    28
    hai ragione è tanta roba..... il link lo avevo gia visitato ma se devo essere sincero non mi è chiara una cosa... la più importante:
    supponiamo che inizi la lettura del disco da una cartella "x", poi lo scorrimento totale delle restanti cartelle/file come lo faccio?
    per caso devo utilizzare "listRoot" o "listFile" ?

    cmq grazie Andrea
    Fa marcia indietro e uccide il cane, fa marcia avanti e uccide il gatto (Corriere della Sera, 1992)
    Si è spento l'uomo che si è dato fuoco (Giornale di Sicilia, 1998)

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    codice:
    import java.io.*;
    import java.io.File;
    
    public class test {
      public static void main (String args[]) {
        File f[] = File.listRoots();
        for (int i=0; i < f.length; i++) {
          System.out.println(f[i].getAbsolutePath());
        }
      }
    }
    con listRoots() ottieni un array di File che contiene le radici di tutti i tuoi dischi. Da quelle cominci ad esplorare il filesystem con listFiles (o list)
    Ciao
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it L'avatar di mhidy
    Registrato dal
    Jan 2005
    Messaggi
    28
    Grazie mille..... qualcosa inizia a muoversi.... non ti nascondo che ha volte faccio qualche diavolerio con i parent ed i child ma alla fine è tutta roba rimediabile.... :maLOL:

    Poi ti faccio sapere...
    Fa marcia indietro e uccide il cane, fa marcia avanti e uccide il gatto (Corriere della Sera, 1992)
    Si è spento l'uomo che si è dato fuoco (Giornale di Sicilia, 1998)

  6. #6
    Utente di HTML.it L'avatar di mhidy
    Registrato dal
    Jan 2005
    Messaggi
    28
    scalare l'albero è più dificile di quanto pensassi.... :master:
    a volte il prog visualizza file e cartelle, in questo caso sotto c:\, che non esistono. E non sono neanche nascoste. Ho fatto affiancare, nell'output, ad ogni nodo la sua path per essere sicuro che scalasse ralmente da C:\, lo fa, però c'è il problema che ho detto prima.
    Magari sarebbe d'aiuto qualche esempio sulla costruzione di alberi legati alle risorse del sistema....
    Ciao
    Fa marcia indietro e uccide il cane, fa marcia avanti e uccide il gatto (Corriere della Sera, 1992)
    Si è spento l'uomo che si è dato fuoco (Giornale di Sicilia, 1998)

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Non capisco dove incontri delle difficoltà.
    Questo semplice programmino, ad esempio, stampa tutti i file contenuti all'interno del drive C del tuo hard disk:
    codice:
    import java.io.*;
    
    public class ScorriHardDisk {
       public static void main(String [] args) {
          File f = new File("C:\\");
          scorriAlbero(f);
       }
    
       private static void scorriAlbero(File f) {
          File [] lista = f.listFiles();
          for (int i=0; i<lista.length; i++) {
             if ( !lista[i].isDirectory() ) {
                System.out.println( lista[i].getPath() );
             } else {
                scorriAlbero( lista[i] );
             }
          }
       }
    }
    Una semplicissima modifica ti permette di scorrere tutti i drive (partizioni e supporti fisici) presenti nel tuo FileSystem.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it L'avatar di mhidy
    Registrato dal
    Jan 2005
    Messaggi
    28
    Hai ragione LeleFT, il problema non è proprio quello dell'ultimo messagio, quello era più che altro uno sclero..... quello che non riesco a fare non è scorrere correttamente tutto il sistema per elencare file o cartelle, ma far rispettare a queste ultime la gerarchia durante la scrittura su file, es:
    codice:
    private static void scorriAlbero(File f) {
          File lista[] = f.listFiles(); 
          for (int i=0; i<lista.length; i++) {
             if (lista[i].isDirectory()) {
                f_out.println("<cartella>"+ lista[i].getName());
                scorriAlbero(lista[i]);
             } else {
                f_out.println("<file>" + lista[i].getName() + "</file>");
             }        
             //f_out.println("</cartella>");         
          }
       }
    in questo caso ho usato la parte fondamentale del codice che mi hai passato per essere più chiaro..... se noti riesco a scrivere sul file.xml il tag per l'apertura della cartella, e quello dell'apertura e chiusura del file, ma non riesco a capire quando dirgli di chiudere quello della cartella, in modo da far rispettare la gerarchia tra file e cartelle....
    Cmq grazie e ciao
    Fa marcia indietro e uccide il cane, fa marcia avanti e uccide il gatto (Corriere della Sera, 1992)
    Si è spento l'uomo che si è dato fuoco (Giornale di Sicilia, 1998)

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Beh... è sufficiente inserire quella riga di codice dopo il ciclo for e non al suo interno
    Inoltre, non serve che tu apra il tag della cartella dentro al for, ma all'esterno anche in questo caso:
    codice:
    private static void scorriAlbero(File f) {
       File lista[] = f.listFiles(); 
       f_out.println("<cartella>"+ f.getName());
       for (int i=0; i<lista.length; i++) {
          if (lista[i].isDirectory()) {
             scorriAlbero(lista[i]);
          } else {
             f_out.println("<file>" + lista[i].getName() + "</file>");
          }        
       }
       f_out.println("</cartella>");
    }
    Ti spiego il perchè: la prima istruzione in grassetto viene eseguita ogni volta che si entra nel metodo; ciò significa che viene eseguita ogni volta che si prende in considerazione una nuova cartella (compresa la prima, la radice).
    L'ultima istruzione in grassetto, invece, viene eseguita ogni volta che si sta per uscire dal metodo, ovvero ogni volta che la lista dei file contenuti nella cartella è esaurita.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Utente di HTML.it L'avatar di mhidy
    Registrato dal
    Jan 2005
    Messaggi
    28
    Grande...... grazie della spiegazione LeleFT
    ora è tutto ok e anche chiaro... un ultima cosa, anche se non vorrei andare fuori tema:
    - Come faccio a far diventare i miei programmi di java un eseguibile?
    fino adesso per mandarli in run utilizzo "BlueJ"
    Mitico LeleFT!!
    Fa marcia indietro e uccide il cane, fa marcia avanti e uccide il gatto (Corriere della Sera, 1992)
    Si è spento l'uomo che si è dato fuoco (Giornale di Sicilia, 1998)

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.