【问题标题】:Java FTP commons-net error downloading filesJava FTP commons-net 下载文件出错
【发布时间】:2014-09-05 03:17:03
【问题描述】:

我正在使用 apache commons.net 访问一个 ftp 站点,该站点是 unix 中的目录:

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

我正在遍历一个列表,其中包含我想在特定 ftp 站点上下载的文件名的名称

String ftpPath = "/home/user1/input/";
FileOutputStream fos = null;
File file;

try {
    for (int i = 0; i < fileList.size(); i++) {
        file = new File(ftpPath+fileList.get(i).toString());
        OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(file));
        boolean download = ftpClient.retrieveFile("c:/test/downloadedFile.csv", outputStream1);
        outputStream1.close();
        if (download) {
           System.out.println("File downloaded successfully !");
        } else {
           System.out.println("Error in downloading file ! " + downloadFile);
        }
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

但是,一旦我尝试开始下载文件,尽管检查 ftp 站点,该文件存在于 /home/user1/input/TejasSDH_PM_AU_09_07_2014_09_00.csv -rw-r--r-- 下,但仍出现此错误:

java.io.FileNotFoundException: \home\user1\input\TejasSDH_PM_AU_09_07_2014_09_00.csv (The system cannot find the path specified)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
at java.io.FileOutputStream.<init>(FileOutputStream.java:110)
at com.syntronic.client.FTPDataExtract$1.downloadTejasFiles(FTPDataExtract.java:255)
at com.syntronic.client.FTPDataExtract$1.run(FTPDataExtract.java:133)

我正在考虑作为我正在连接的 ftp 站点,路径 dir 位于 unix home/user1/input 中,而 java 正在将所有“/”转换为“\”。任何人都知道 eclipse 中的错误是什么意思,或者我的代码有问题吗?谢谢

【问题讨论】:

  • nablex,谢谢你,我终于明白你想说的话了。我真傻。我从本地路径切换了遥控器。需要尽快去看医生,连续 8 小时编写代码让我的思维变慢。再次感谢您。

标签: java ftp


【解决方案1】:

你好像在换东西。

您正在向\home\user1\input\TejasSDH_PM_AU_09_07_2014_09_00.csv 打开一个文件输出流,并且您似乎在 Windows 上,所以它不起作用。

你有 ftp 路径应该去的本地路径,反之亦然。

请仔细阅读您的错误,我敢打赌 FTPDataExtract.java 中的第 255 行是:

fos = new FileOutputStream(downloadFile);

这应该提醒您这实际上不是 ftp 问题。

【讨论】:

  • 我明白你的意思。我更新了代码(见上文),因为我目前正在寻找解决方案,但同样的错误仍然显示即使将输出流更改为文件。
【解决方案2】:
for (int i = 0; i < fileList.size(); i++) {
    OutputStream output;
    output = new FileOutputStream("C:/test/" + fileList.get(i).toString());
    ftpClient.retrieveFile(ftpPath + fileList.get(i).toString(), output); 
    output.close();
}

我错误地切换了远程和本地路径,正确切换会顺利运行程序。

【讨论】:

    猜你喜欢
    • 2015-01-24
    • 2018-10-04
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多