I use commons-net-3.1.jar to download FTP files,part of source as below:
ftpClient.changeWorkingDirectory(new String(path.getBytes(ENCODING_SYS), ENCODING_FTP_ISO));
FTPFile[] ftpFiles = ftpClient.listFiles();
It runs well in windows system,but throws Exception
in linux system, Exeception
as follows:
org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421 received. Server closed connection.
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:363)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:290)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:479)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:552)
at org.apache.commons.net.ftp.FTP.cwd(FTP.java:773)
at org.apache.commons.net.ftp.FTPClient.changeWorkingDirectory(FTPClient.java:998)
......
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
at java.io.BufferedWriter.flush(BufferedWriter.java:254)
at org.apache.commons.net.ftp.FTP.__send(FTP.java:501)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:475)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:552)
at org.apache.commons.net.ftp.FTP.cwd(FTP.java:773)
at org.apache.commons.net.ftp.FTPClient.changeWorkingDirectory(FTPClient.java:998)
It seems like caused by FTPClient.changeWorkingDirectory
's IOException
. What's the best way to solve this?