Получение ошибки во время FTP-файла с использованием FTPClient - PullRequest
2 голосов
/ 16 июля 2011

Я получаю следующее исключение, когда файл ftp переходит на другой компьютер.

org.apache.commons.net.io.CopyStreamException: IOException caught while copying.
    at org.apache.commons.net.io.Util.copyStream(Util.java:119)
    at org.apache.commons.net.io.Util.copyStream(Util.java:151)
    at org.apache.commons.net.io.Util.copyStream(Util.java:162)
    at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:373)
    at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:1360)
    at com.fs.ftp.FTPUsingFTPClientApache.startFTP(FTPUsingFTPClientApache.java:40)
    at com.fs.ftp.FTPUsingFTPClientApache.main(FTPUsingFTPClientApache.java:17)

Код, который я использую для FTP, выглядит примерно так: -

FTPClient ftpClient = new FTPClient();
ftpClient.connect("home.abc.com");
ftpClient.login("remote", "guesst12");
int replyCode = ftpClient.getReplyCode();
if(FTPReply.isPositiveCompletion(replyCode)) {
    System.out.println("Connection proper");
}

if(ftpClient.changeWorkingDirectory("share")) {
    System.out.println("Directory Change Succesfull");
}
InputStream input = new FileInputStream(new File("H:/testFile.txt"));
BufferedInputStream inputStrean = new BufferedInputStream(input);
if(ftpClient.storeFile("testFile.txt", input)) {
    System.out.println("File Stored Successfully");
}
input.close();
inputStrean.close();
ftpClient.logout();
ftpClient.disconnect();

Вышеисключение, я получаю в строке ftpClient.storeFile("testFile.txt", input).

Я что-то упустил или использую это не правильно.

Спасибо

Ответы [ 4 ]

2 голосов
/ 20 марта 2017

Я хочу поддержать вышеупомянутое решение, однако у меня пока недостаточно репутации. Это, наконец, спаси меня!

        ftps.setFileType(FTP.BINARY_FILE_TYPE);
        ftps.enterLocalPassiveMode();
        ftps.execPBSZ(0) ;
        ftps.execPROT("P") ;

Кстати, моя проблема заключается в том, что «соединение сбрасывается во время передачи». Ниже 2 команды являются ключевыми командами для меня. ftps.execPBSZ (0); ftps.execPROT ("P");

2 голосов
/ 16 июля 2011

Перехватите это исключение, вызовите его метод getIOException(), чтобы получить исключение, вызвавшее проблему, и напечатайте его трассировку стека. Это скажет вам, что IOException вызвало сбой копирования.

0 голосов
/ 08 июня 2018

По моему опыту, эта ошибка была вызвана тем, что файловая система была переполнена

0 голосов
/ 19 октября 2016

Если у вас есть проблемы с файлом 0KB (например, PDF-файлы) после передачи по ftps, вы должны включить пассивный режим и установить тип файла

            ftps.setFileType(FTP.BINARY_FILE_TYPE);
            ftps.enterLocalPassiveMode();
            ftps.execPBSZ(0) ;
            ftps.execPROT("P") ;
...