Java FTP commons-网络错误下载文件

时间:2014-09-05 03:17:04

标签: java ftp

我正在使用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中的错误意味着什么或我的代码有什么问题?谢谢

2 个答案:

答案 0 :(得分:0)

你似乎正在改变现状。

您正在打开一个文件输出流到\home\user1\input\TejasSDH_PM_AU_09_07_2014_09_00.csv,您似乎在Windows上,因此它无法正常工作。

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

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

fos = new FileOutputStream(downloadFile);

哪个应该提醒您它实际上不是ftp问题。

答案 1 :(得分:0)

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

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