2014-09-05 10 views
0

我使用Apache commons.net訪問FTP網站是該目錄是UNIX:Java的FTP公地淨誤差下載文件

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

但是,一旦我嘗試啓動下載我得到這個錯誤的文件althougth檢查FTP站點在/ home /用戶1 /輸入/ 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站點,路徑目錄在unix home/user1/input中,而java正在將所有「/」轉換爲「\」。任何人都知道eclipse中的錯誤意味着什麼,或者我的代碼有問題嗎?謝謝

+0

nablex,謝謝我終於得到你想說的話。對我來說太愚蠢了。我從本地路徑切換遠程。需要看醫生很快做代碼8小時正在讓我的腦子慢。再次謝謝你。 – 2014-09-05 07:51:39

回答

0

你似乎在切換東西。

您正在打開一個文件outputstream到\home\user1\input\TejasSDH_PM_AU_09_07_2014_09_00.csv,你似乎在Windows上,所以它不會工作。

你有ftp路徑應該去的地方路徑和其他方式。

請閱讀你的錯誤更仔細,我敢打賭,線255 FTPDataExtract.java是:

fos = new FileOutputStream(downloadFile); 

哪些應該提醒你的事實,這實際上不是一個ftp問題。

+0

我明白你的意思了。我更新了代碼(見上文),因爲我目前正在爲此找到解決方案,但同樣的錯誤仍然表明即使將輸出流更改爲文件。 – 2014-09-05 07:33:23

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

我錯誤地切換遠程和本地路徑,正確切換它會順利運行程序。