我正在使用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中的错误意味着什么或我的代码有什么问题?谢谢
答案 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();
}
我错误地切换了远程和本地路径,正确切换它将顺利运行程序。