Java中的FTPClient类问题

我正在使用org.apache.commons.net.ftp.FTPClient,看到的行为令人困惑。

下面的方法打算浏览一个FTPFile列表,读入它们,然后对内容进行一些处理。都可以了 (真正)不起作用的是FTPClient对象执行以下操作…

1) Properly retrieves and stores the FIRST file in the list  

2) List item evaluates to NULL for x number of successive iterations of the loop (x varies on successive attempts

3) manages to retrieve exactly 1 more file in the list

4) reports that it is null for exactly 1 more file in the list

5) hangs indefinitely, reporting no further activity.

public static String mergeXMLFiles(List<FTPFile> files, String rootElementNodeName, FTPClient ftp){

String ret = null;

String fileAsString = null;

//InputStream inStream;

int c;

if(files == null || rootElementNodeName == null)

return null;

try {

System.out.println("GETTING " + files.size() + " files");

for (FTPFile file : files) {

fileAsString = "";

InputStream inStream = ftp.retrieveFileStream(file.getName());

if(inStream == null){

System.out.println("FtpUtil.mergeXMLFiles() couldn't initialize inStream for file:" + file.getName());

continue;//THIS IS THE PART THAT I SEE FOR files [1 - arbitrary number (usually around 20)] and then 1 more time for [x + 2] after [x + 1] passes successfully.

}

while((c = inStream.read()) != -1){

fileAsString += Character.valueOf((char)c);

}

inStream.close();

System.out.println("FILE:" + file.getName() + "\n" + fileAsString);

}

} catch (Exception e) {

System.out.println("FtpUtil.mergeXMLFiles() failed:" + e);

}

return ret;

}

有没有人看到这样的东西?我是FTPClient的新手,我在做错什么吗?

回答:

根据该API

FTPClient.retrieveFileStream(),该方法返回null时,它无法打开数据连接,在这种情况下,你应该检查答复代码(例如getReplyCode()getReplyString()getReplyStrings()),看看它为什么失败。另外,您假设通过调用completePendingCommand()并验证传输确实成功来完成文件传输。

以上是 Java中的FTPClient类问题 的全部内容, 来源链接: utcz.com/qa/398173.html

回到顶部