从ftp java只获取excel文件名

时间:2014-02-24 09:04:17

标签: java ftp

我想只从FTP获得扩展名为.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的新手。

3 个答案:

答案 0 :(得分:2)

您需要过滤从ftp客户端返回的字符串。以下是如何执行此操作的示例。

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

xlsFiles List仅包含以".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);
    }
}

答案 1 :(得分: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);

答案 2 :(得分:2)

使用Java 8,您可以使用lambda函数

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