仅从ftp服务器返回CSV文件

时间:2014-11-26 12:04:37

标签: java csv ftp

我有这个工作方法列出来自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;预期的错误,但这不是唯一的问题,我甚至不确定整个方法是否正确。任何帮助将非常感激。

3 个答案:

答案 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)

您的代码看起来像个谜题。

  1. 我认为你应该声明要返回ArrayList<String>而不是ArrayList<String[]>
  2. ArrayList的声明必须在循环之外。
  3. 尽量避免使用方法和局部变量的相同名称。
  4. 像这样的Smth:

      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;
        }