我想只从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的新手。
答案 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);