Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Aiuto su ftp

  1. #1

    Aiuto su ftp

    ho iniziato a studiarmi ftp con java.
    come librerie uso le apache.commons.
    ho un problema con il listing dei file nella directory:
    codice:
    import java.io.IOException;
    import org.apache.commons.net.ftp.*;
    
    public class Connessione {
    
        public static void main(String args[]) {
            try {
                int reply;
                String server = "myhost";
                String directory = "/media/hd/ftp";
                FTPClient ftp = new FTPClient();
                ftp.connect(server);
                System.out.println("1-Connected to " + server + ".");
                ftp.login("user", "pass");
                ftp.changeWorkingDirectory(directory);
                System.out.println("2-" + directory);
                FTPFile[] files = ftp.listFiles(directory);
                System.out.println("3-" + files);
                System.out.print("4-" + ftp.getReplyString());
                reply = ftp.getReplyCode();
                if (!FTPReply.isPositiveCompletion(reply)) {
                    ftp.disconnect();
                    System.err.println("FTP server refused connection.");
                    System.exit(1);
                }
                ftp.logout();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    il risultato che mi da è questo:
    1-Connected to myhost.
    2-/media/hd/ftp
    3-[Lorg.apache.commons.net.ftp.FTPFile;@32c41a
    4-226 Directory send OK.

    nn ho capito se devo fare qualcosa di particolare per ricevere la lista dei file di una directory.

  2. #2
    risolto questo problema:
    codice:
               for (int i = 0; i < files.length; i++) {
                    System.out.println(files[i]);
                }
    avrei altre due domandine:
    1-c'è un metodo che mi dice in che directory sto?
    2-ci sono andhe due directory: è possibile ordinare alfabeticamente prima le directory e poi i files?
    3-è possibile visualizzare direttamente i files di quelle direcotry con una struttura ad albero?

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Aiuto su ftp

    Originariamente inviato da fermat
    codice:
                FTPFile[] files = ftp.listFiles(directory);
    3-[Lorg.apache.commons.net.ftp.FTPFile;@32c41a

    nn ho capito se devo fare qualcosa di particolare per ricevere la lista dei file di una directory.
    La lista dei file ce l'hai, è in quel array FTPFile[] files

    Ma se stampi banalmente l'oggetto array, ottieni quella forma "strana" ma semplicemente perché gli array NON ridefiniscono il toString().

    Fai un ciclo sull'array.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fermat
    1-c'è un metodo che mi dice in che directory sto?
    Guardando velocemente il javadoc di FTPClient, mi pare di no (ma potrei non aver visto bene io).

    EDIT: ho visto male io. C'è un printWorkingDirectory() che restituisce String. Non ho idea del perché l'abbiano chiamato print.

    Originariamente inviato da fermat
    2-ci sono andhe due directory: è possibile ordinare alfabeticamente prima le directory e poi i files?
    Sempre dal javadoc mi pare non lo possa fare lui. Ma comunque non sarebbe un problema ... hai un array, determini e ordini tu quello che vuoi.

    Originariamente inviato da fermat
    3-è possibile visualizzare direttamente i files di quelle direcotry con una struttura ad albero?
    Sei comunque tu che dovresti farlo. La classe FTPClient ti offre solo e semplicemente gli strumenti al livello più basilare per cambiare directory, ottenere la lista dei file, eliminare, trasferire e altro.
    Qualunque a) "visione" particolare di file/directory, b) filtri, c) ordinamenti puoi e dovresti farli tu.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    1-ho riletto e nn mi sembra di trovare nulla del genere (che invece ho trovato in un'altra libreria).
    3-diciamo che per adesso questo mi interessa poco, sarà più utile al momenti in cui cercherò di costruire l'applicazione grafica.

    mi interessa invece più vedere come ordinare i file e direcotry.
    io pensavo di usare Arrays.sort(files), ma mi da errore.
    che metodi potrei applicare nel caso specifico?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fermat
    1-ho riletto e nn mi sembra di trovare nulla del genere (che invece ho trovato in un'altra libreria).
    Ho editato la risposta a questo punto. C'è il metodo .... non l'avevo subito visto io!

    Originariamente inviato da fermat
    3-diciamo che per adesso questo mi interessa poco, sarà più utile al momenti in cui cercherò di costruire l'applicazione grafica.
    Se vuoi un "albero" si tratta solo di usare questa FTPClient per "navigare" con un approccio tipicamente "ricorsivo" nelle sotto-directory.

    Originariamente inviato da fermat
    mi interessa invece più vedere come ordinare i file e direcotry.
    io pensavo di usare Arrays.sort(files), ma mi da errore.
    che metodi potrei applicare nel caso specifico?
    Arrays.sort ok. Ma siccome FTPFile NON implementa Comparable, devi usare l'altro sort, quello che riceve un Comparator. Che devi implementare tu per stabilire l'ordinamento tra 2 oggetti FTPFile che il sort ti passerà di volta in volta secondo il suo algoritmo di ordinamento.

    Il criterio di ordinamento tra 2 FTPFile potrebbe essere fatto gestendo i vari casi:
    a) directory vs file: le directory vanno prima, quindi a seconda di quale è il file e quale la directory dei due oggetti, devi ritornare +1 o -1 per dire "la directory è minore".
    b) file vs file: comparazione per nome
    c) directory vs directory: comparazione per nome.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    1-si l'avevo trovato anche io alla fine. io cercavo tutt'altro.

    3-aspetto di arrivare a casa dove ho un libro che spiega abb bene Comparable.

    2-io avevo pensato di fare un altro ciclo for per ogni sotto directory.
    solo che nn so come richiamare le sottodirectory.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fermat
    3-aspetto di arrivare a casa dove ho un libro che spiega abb bene Comparable.
    Ma qui centra Comparator, non Comparable.

    Originariamente inviato da fermat
    2-io avevo pensato di fare un altro ciclo for per ogni sotto directory.
    solo che nn so come richiamare le sottodirectory.
    In modo "ricorsivo" (perlomeno è l'approccio tipico). Un metodo che invoca sé stesso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    si si Comparator, ho sbagliato io.

    l'avevo pensato così:
    codice:
                for (int i = 0; i < files.length; i++) {
                    if(files[i].isDirectory()) {
                        for (int j=0;j<a cosa;j++) {
    
                        }
                    }
                    System.out.println(files[i]);
                }
    in pratica:
    mi controlla nell'array files se ci sono directory.
    se nn lo sono mi stampa i file.
    se lo sono mi stmpa i file che ci sono dentro.
    solo che mi manca qualche pezzo.
    come faccio a "entrare" nelle subdirectory?
    j< a cosa (per decidere quanto ciclare)?

    nn so se sono riuscito a spiegare bene il mio problema.

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fermat
    solo che mi manca qualche pezzo.
    come faccio a "entrare" nelle subdirectory?
    Ripeto: metodo "ricorsivo". Se è una directory, invoca sé stesso passando la directory. L'annidamento delle directory segue cioè (se vuoi vederla in questo modo) l'annidamento delle chiamate al metodo.


    Guarda questo post dove avevo abbozzato una scansione in "profondità" del file-system locale (con java.io.File). Nel tuo caso ovviamente essendo su FTP cambiano gli oggetti. Ma il concetto è quello!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.