我有这个工作方法列出来自ftp服务器的文件,但我想修改它以使用它从服务器下载只有csv文件。这是方法:
private static void printFileDetails(FTPFile[] files) {
DateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (FTPFile file : files) {
String details = file.getName();
if (file.isDirectory()) {
details = "[" + details + "]";
}
details += "\t\t" + file.getSize();
details += "\t\t" + dateFormater.format(file.getTimestamp().getTime());
System.out.println(details);
}
}
这就是我的尝试:
private static ArrayList<String[]> CsvFiles(FTPFile[] files)
{
// get list of files on given path
for (FTPFile file : files) {
String details = file.getName();
//String[] CsvFiles;
ArrayList<String> CsvFiles = new ArrayList<>();
CsvFiles.add(details);
}
return CsvFiles[];
}
返回CsvFiles []; netbeans正在展示&#39; .class&#39;预期的错误,但这不是唯一的问题,我甚至不确定整个方法是否正确。任何帮助将非常感激。
答案 0 :(得分:4)
我们可以使用FTPFileFilter过滤我们想要列出的文件
FTPFileFilter filter=new FTPFileFilter(){
@Override
public boolean accept(FTPFile ftpFile) {
return (ftpFile.isFile() && ftpFile.getName().endsWith(".csv"));
}
};
FTPFile[] files=sessionForFtp.Files("directoryName", filter);
答案 1 :(得分:0)
在文件名上执行details.endswith(“。csv”)。
(注意!!未经测试的代码)
if(details.endsWith(".csv")) {
CsvFiles.add(details);
}
使用您的代码(以及一些清理):
private static ArrayList<String> CsvFiles(FTPFile[] files)
{
ArrayList<String> CsvFiles = new ArrayList<>();
// get list of files on given path
for (FTPFile file : files)
{
if(file.getName().endsWith(".csv")) {
CsvFiles.add(details);
}
}
return CsvFiles;
}
答案 2 :(得分:0)
您的代码看起来像个谜题。
ArrayList<String>
而不是ArrayList<String[]>
。 private static ArrayList<String> getCsvFiles(FTPFile[] files){
ArrayList<String> csvFiles = new ArrayList<>();
for (FTPFile file : files) {
String details = file.getName();
//if file is csv
csvFiles.add(details);
}
return csvFiles;
}