我有一个给定的FTP服务器。我可以根据WinSCP和其他程序连接到服务器。我已经通过Java连接到服务器,但过了一段时间我无法连接。根据WinSCP,我可以连接整个时间。现在问题是服务器是问题的原因还是程序。
有我的代码:
private FTPClient ftpClient = null;
public FtpServerConnector() throws Exception {
ftpClient = new FTPClient();
ftpClient.connect(url);
ftpClient.login(username, password);
}
public List<FTPFile> getDirectory(String directoryPath) throws Exception {
FTPFile[] files = ftpClient.listFiles(directoryPath);
List<FTPFile> result = new ArrayList<FTPFile>();
for (FTPFile ftpFile : files) {
if (ftpFile.getTimestamp().getTime().getTime() >= Long.parseLong("1451606400000")) {
result.add(ftpFile);
}
}
return result;
}
public static void main(String[] args) {
try {
FtpServerConnector ftpServerConnector = new FtpServerConnector();
List<FTPFile> folders = ftpServerConnector.getDirectory("/");
for (FTPFile ftpFile : folders) {
System.out.println(ftpFile.getName());
}
} catch (Exception e) {
e.printStackTrace();
}
}
有例外:
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:161)
at java.io.BufferedReader.read(BufferedReader.java:182)
at org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:314)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:483)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:608)
at org.apache.commons.net.ftp.FTP.port(FTP.java:932)
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:812)
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:759)
at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3293)
at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2930)
at com.kianaanalytics.eventManagement.util.FtpServerConnector.getDirectory(FtpServerConnector.java:38)
at com.kianaanalytics.eventManagement.util.ImportWorker.getAllNewFairFolders(ImportWorker.java:19)
答案 0 :(得分:0)
该目录似乎内部有“太多”文件 - 足以导致SocketTimeout Exception太长。
你没有提到你在FTP客户端使用的版本, 这个问题似乎处理类似的事情 - 我会考虑升级版本,如果它低于3.4。