gpt4 book ai didi

java - apache commons net - completependingcommand 返回 false

转载 作者:搜寻专家 更新时间:2023-11-01 03:25:45 25 4
gpt4 key购买 nike

我正在使用 apache commons net 库从 FTP 服务器获取文件。

我不需要下载整个文件,只需阅读标题即可确定文件大小。我用来执行此操作的库是 metadata extractor

问题是,当我调用 client.completePendingCommand() 时,它总是返回 false - 但是日期变量打印正确。我问过元数据提取器的开发人员,他不知道为什么会返回 false。有人有解释吗?我不确定忽略 false 是否可以?

FTPClient client = new FTPHTTPClient(proxy settings);
InputStream stream = null;
try {
client.connect(FTPProperties.getInstance().getProperty("ftp.server"));
client.login(FTPProperties.getInstance().getProperty("ftp.username"), FTPProperties.getInstance().getProperty("ftp.password"));
client.enterLocalPassiveMode();

for (String path : paths) { //paths are the jpeg files to download
try {
stream = client.retrieveFileStream(p);

Metadata metadata = ImageMetadataReader.readMetadata(stream);
Directory directory = metadata.getDirectory(ExifSubIFDDirectory.class);
Date date = directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL);
System.out.println("DATE " + date);
} catch (IOException ex) {
Logger.getLogger(UploadImage.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if(stream != null) {
stream.close();
}
if (in != null) {
in.close();
}
if (!client.completePendingCommand()) {
Logger.getLogger("Error");
}
}
}
} catch (Exception ex) {
Logger.getLogger(UploadImage.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (client != null && client.isConnected()) {
client.disconnect();
}
}

最佳答案

我不认为您做错了什么,我也不认为元数据提取器有任何问题。您最好检查您正在检索的流是否可以正确处理,而不是使用 completePendingCommand() 作为成功的指示。如果出现问题,元数据提取器可能已经通过抛出异常来为您完成这项工作。

解释:completePendingCommand() 验证整个交易是否成功,成功或失败取决于 FTPClients 回复代码在 200 <= replyCode < 300 ( http://commons.apache.org/proper/commons-net/apidocs/src-html/org/apache/commons/net/ftp/FTPReply.html#line.133 ) 范围内。

我遇到了类似的问题,发现我的 FTPClient 对象的回复代码为 150,这表明根据 FTP 服务器,事务尚未完成。回复代码 150 是肯定的初步回复,但未归类为肯定的完成回复(https://www.rfc-editor.org/rfc/rfc959 第 37 页)。我的观点是响应仍然是积极的,虽然我认为我已经完成了交易,但 FTP 服务器仍然认为我需要做一些事情。这可能是 org.apache.commons.net.ftp.FTPClient 或与之交互的 FTP 服务器的问题。

关于java - apache commons net - completependingcommand 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14307898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com