java - 使用java代码将目录的多媒体文件下载到我的本地机器中

标签 java file-io ftp

我有一个java代码,我将使用它从远程计算机的目录下载文件。现在使用可用的ftp类来执行相同的操作。当我运行导致所有结果的代码时,就会出现问题正在下载的文件,但当我看到所有文件的大小时,我发现所有文件都是零字节并且也不包含任何内容。如果您可以分析这背后可能的原因,请帮忙分析一下?

package login.multiple;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;

import org.apache.commons.*; 
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

public class Downloader {

    /**
     * @param args
     * @throws FTPException 
     * @throws FTPIllegalReplyException 
     * @throws IOException 
     * @throws IllegalStateException 
     * @throws FTPListParseException 
     * @throws FTPAbortedException 
     * @throws FTPDataTransferException 
     */
    public static void main(String[] args)  {
        // TODO Auto-generated method stub
        FTPFile[] list = null;
        String fileNames[];
        String path = "\\Users\\XXX\\Documents\\Downloads\\Coldplay - Mylo Xyloto [mp3-vbr-2011]";
        int i = 0;
        FileOutputStream fos = null;
        FTPClient client = new FTPClient();
        //client.connect("192.168.1.2");
        try {
            client.connect("127.0.0.1");
            client.login("xxx", "yyy");
            list = client.listFiles(path);
            for(i=0;i<list.length;i++){
            //for(i=0;i<1;i++){
                fos = new FileOutputStream(list[i].getName());
                client.retrieveFile(path + list[i].getName(), fos);
            }
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        try {
            client.disconnect();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        }
    }

最佳答案

自从您打开 FileOutputStream ,很有可能您也有责任关闭它。添加fos.close()之后client.retrieveFile 。你的 try-catch 设计也很困惑。如果正确的话,它将有助于诊断。将所有内容放在之后 client.connect进入try {...} finally { client.disconnect(); }并声明您的main方法为throws Exception 。这会给你带来快速失败的行为。

关于java - 使用java代码将目录的多媒体文件下载到我的本地机器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10162888/

相关文章:

c - Win32 IO 性能问题

PHP通过FTP下载整个文件夹(递归)

c# - 可以使用 FileZilla 或 WinSCP 连接到 FTP,但不能使用 FtpWebRequest 或 FluentFTP

java - 如何从另一台计算机的外部 .jar 获取类?

Java参数具有不同的静态和动态类型?

java - 我的两个HealthIndicator的配置都读不到

java - 使用 ClassLoader 和 Class.forName 加载类的区别

Java FileOutputStream 创建文件未解锁

java - 通过优化读取 N 行 - Java

python - FTP 服务器不响应用户请求