2013-01-07 10 views
7
URL url = new URL("ftp://user:[email protected]/thefolder/"); 
URLConnection connection = url.openConnection(); 
... 
// List files in folder... 

Utilizzando qualcosa come sopra, mi chiedevo come potrei prendere un elenco di file nella cartella 'thefolder'?File di elenco FTP URLConnection


Ciao ragazzi,

seguito di questo domanda iniziale, mi hanno messo insieme questo semplice connessione FTP che è tutto lavoro e guardando bene. Può vedere tutti i file in/live/conf/location e copiarli tutti in local/conf/location. L'unico problema è che sta copiando i file ma non c'è alcun contenuto. Sono tutti 0KB e vuoti!

Qualcuno può vedere qualcosa di ovvio che copierebbe il nome del file ma non il contenuto del file.

Acclamazioni

KPS

try { 
    FTPClient ftp = new FTPClient(); 
    ftp.connect("000.000.000.000"); 
    ftp.login("USER", "PASSWORD"); 
    ftp.enterLocalPassiveMode(); 
    ftp.setFileType(FTP.BINARY_FILE_TYPE); 

    FTPFile[] files = ftp.listFiles("/live/conf/"); 
    for (int i=0; i < files.length; i++) { 
     if (files[i].getName().contains(".csv")) { 

      String remoteFile1 = files[i].getName(); 
      File downloadFile1 = new File("/var/local/import/conf/"+files[i].getName()); 
      OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1)); 
      ftp.retrieveFile(remoteFile1, outputStream1); 
      outputStream1.close();     

     } 
    } 
    ftp.disconnect(); 
} catch (SocketException ex) { 
    ex.printStackTrace(); 
} catch (IOException ex) { 
    ex.printStackTrace(); 
} 
+0

Ci sono librerie client FTP dedicato, è meglio utilizzare questo, sarà molto più facile. – fge

risposta

8

Il Java SE URLConnection è insuitable per il compito di recuperare un elenco di file da un host FTP. Per quanto riguarda l'FTP, fondamentalmente supporta solo i comandi FTP get o put (recupera o carica il file). Non supporta il comando FTP ls (file di elenco) che stai fondamentalmente cercando, per non parlare di molti altri.

È necessario cercare librerie di terze parti che supportano il comando FTP ls (e molte altre). Uno comunemente usato è il Apache Commons NetFtpClient. Nella sua javadoc è dimostrato come emettere un ls:

FTPClient f = new FTPClient(); 
f.connect(server); 
f.login(username, password); 
FTPFile[] files = f.listFiles(directory); 
+0

Applausi freddi per quello, veloce, semplice, facile e funziona! – Casper

+0

Prego. – BalusC

1

Partenza questa classe ho trovato. È il sollevamento per te. Class at nsftools.com

esempio potrebbe essere:

FTPConnection ftpConnect = new FTPConnection(); 
ftpConnect.connect("ftp.example.com"); 
ftpConnect.login("user","pass"); 

System.out.println(ftpConnect.listFiles()); 
4

si potrebbe usare Apache commons FTPClient

Questo permetterebbe di chiamare ListFiles con ...

public static void main(String[] args) throws IOException { 
     FTPClient client = new FTPClient(); 
     client.connect("c64.rulez.org"); 
     client.enterLocalPassiveMode(); 
     client.login("anonymous", ""); 
     FTPFile[] files = client.listFiles("/pub"); 
     for (FTPFile file : files) { 
      System.out.println(file.getName()); 
     } 
+0

Come da BalusC - Fantastico, evviva, veloce, semplice, facile e funziona! – Casper