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

使用類似上面的東西,我想知道如何抓取文件夾'文件夾'中的文件列表?URLConnection FTP列表文件


嗨,大家好,

從這種原始的問題上之後,我已經把這個簡單的FTP連接,也就是所有的工作和 看起來很不錯。它可以查看/ live/conf /位置中的所有文件,並將它們全部複製到本地/ conf /位置。 唯一的問題是,它是複製文件,但沒有content.They都是0KB和空!

任何人都可以看到任何明顯的將複製文件名而不是文件內容。

乾杯

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

有專門的FTP客戶端庫,你最好使用它,它就會容易得多。 – fge

回答

8

的Java SE的URLConnection是insuitable爲從FTP主機檢索文件列表的工作。至於FTP,它基本上只支持FTP getput命令(檢索或上傳文件)。它不支持你基本尋找的FTP ls命令(列表文件),更不用說許多其他的了。

您需要查找支持FTP ls命令(以及更多)的第三方庫。常用的是Apache Commons NetFtpClient。在其javadoc證明如何發出ls

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

酷炫的歡呼,快速,簡單,輕鬆,有效! – Casper

+0

不客氣。 – BalusC

1

退房這個類,我發現。它爲你提升。 Class at nsftools.com

例子是:

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

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

你可以使用Apache commons FTPClient

這將允許您調用listFiles與...

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

根據BalusC - 酷,歡呼,快速,簡單,簡單和工作! – Casper