2014-09-05 3 views
0

Я использую апачский 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 проверки сайта передачи файлов файл существует в/дома/user1/входе/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, спасибо, я наконец понял, что вы пытаетесь сказать. Так глупо от меня. Я переключил пульт дистанционного управления на локальный путь. Нужно видеть, что доктор скоро делает коды для 8hrs прямо делает мой разум медленным. Еще раз спасибо. –

ответ

0

Вы, кажется, меняете вещи вокруг.

Вы открываете выходной поток файла до \home\user1\input\TejasSDH_PM_AU_09_07_2014_09_00.csv, и, похоже, вы находитесь на окнах, чтобы он не работал.

У вас есть локальный путь, по которому путь ftp должен идти, и наоборот.

Пожалуйста, прочитайте ваши ошибки, более внимательно, я готов поспорить, что линия 255 в FTPDataExtract.java является:

fos = new FileOutputStream(downloadFile); 

Который должен предупредить вас о том, что это не на самом деле проблема FTP.

+0

Я понимаю, что вы имеете в виду. Я обновил код (см. Выше), поскольку в настоящее время я нахожу решение для этого, но та же ошибка по-прежнему показывает даже изменение выходного потока в файл. –

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

Я неправомерно переключаю дистанционный и локальный путь, поэтому его правильно запускает программа.