2014-02-24 75 views
1

excel文件名字,我想只有文件從FTP只獲得來自FTP的Java

擴展的.xls我做了下面的代碼:

public String[] GetFileList() 
    { 
     String ftpServerIP = Ftp_Path; 
     String ftpUserID = Ftp_UserName; 
     String ftpPassword = Ftp_Password; 

     FTPFile[] downloadFiles = null; 

     StringBuilder result = new StringBuilder(); 
     FTPClient ftp = new FTPClient(); 

     try { 
      ftp.connect("ftp://173.201.0.1/"); 
      ftp.login(ftpUserID, ftpPassword); 

      downloadFiles=ftp.listFiles(); 


     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     return downloadFiles; 

    } 
只有

但它沒有返回的XLS文件。

請幫幫我。我怎麼能實現它。

我是新來的java。

回答

2

您需要過濾從ftp客戶端返回的字符串。下面是一個如何做到這一點的例子。

List<String> xlsFiles = new ArrayList<String>(); 
for(String i : downloadFiles) { 
    if(i.endsWith(".xls")) { 
     xlsFiles.add(i); 
    } 
} 

xlsFilesList將只包含文件與".xls"結束。

編輯:

它出現在例如由於不正確使用FTPClient API將無法編譯。 FTPClient.listFiles()返回一個FTPFiles的數組。

FTPFiles[] downloadFiles = ftp.listFiles(); 
List<FTPFile> xlsFiles = new ArrayList<FTPFile>(); 
for(FTPFilei : downloadFiles) { 
    if(i.getName().endsWith(".xls")) { 
     xlsFiles.add(i); 
    } 
} 
+0

我有downloadFiles的類型是FTPFile完成[] –

+0

it..thank你 –

2

另一種可能性是創建您自己的文件過濾器。 ApacheFTP具有此功能。

 FTPFileFilter filter = new FTPFileFilter() {     
      @Override 
      public boolean accept(FTPFile ftpFile) { 

       return (ftpFile.isFile() && ftpFile.getName().contains(".xls")); 
      } 
     }; 

     FTPFile[] result = ftpClient.listFiles(dirToSearch, filter); 
1

與Java 8,你可以使用lambda函數

FTPFileFilter filter=ftpFile -> (ftpFile.isFile() && ftpFile.getName().contains(".xls")); 
FTPFile[] result = ftpClient.listFiles(dirToSearch, filter);