【问题标题】:Java Apache FTPClient most downloaded files are empty or missingJava Apache FTPClient 大多数下载的文件为空或丢失
【发布时间】:2021-02-08 04:40:53
【问题描述】:

这是我的代码,应该将整个 FTP 目录下载到本地文件夹。它做得很好,但大多数文件的大小都是 0KB。似乎只有 JSON 文件包含它们的所有数据。

我尝试过的事情:

  1. 使用client.setFileType("FTP.BINARY_FILE_TYPE"); 更改 FTP 文件类型
  2. 使用OutputStream 代替FileOutputStream

代码:

public static void copyFolder(File destination, FTPFile sourceFile, FTPClient ftpClient) throws IOException{
    if (!sourceFile.isDirectory()) {
        //copy file
        File downloadFile = new File(destination + "/"+ sourceFile.getName());
        String remoteFile =  sourceFile.getName();
        FileOutputStream outputStream = new FileOutputStream(downloadFile);
        System.out.println(remoteFile);
        System.out.println(downloadFile.getPath());
        boolean success = ftpClient.retrieveFile(remoteFile, outputStream);
        if(success) {
            System.out.println("Retrieved " + remoteFile);
        }
        outputStream.close();
    }else{
        //loop through a subdirectory
        ftpClient.changeWorkingDirectory(ftpClient.printWorkingDirectory() + "/" + sourceFile.getName());
        System.out.println(ftpClient.printWorkingDirectory());
        FTPFile[] contents = ftpClient.listFiles(ftpClient.printWorkingDirectory());
        File newDest = new File(destination + "/" + sourceFile.getName());
        if(!newDest.exists()){
            newDest.mkdir();
        }
        for(FTPFile file : contents){
            copyFolder(newDest, file, ftpClient);
        }
        return;
    }
}

如何正确获取转账?

尝试在同一台计算机上下载它以几次失去连接而告终 - 在文件下载之间和期间。此外,似乎下载的文件很少。我会将问题的标题更改为更具体。

由于某种原因,只复制了两个文件 - https://pastebin.com/XNWqRMDj 它们不是空的。

【问题讨论】:

    标签: java download ftp apache-commons-net


    【解决方案1】:

    问题在于您的changeWorkingDirectory 电话。大部分时间都失败了。

    ftpClient.changeWorkingDirectory(ftpClient.printWorkingDirectory() + "/" + sourceFile.getName());
    

    应该是:

    ftpClient.changeWorkingDirectory(destination + "/" + sourceFile.getName());
    

    有关在 Java 中下载 FTP 文件夹的完整工作代码,请参阅:
    Download all folders recursively from FTP server in Java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 2016-11-22
      相关资源
      最近更新 更多