gpt4 book ai didi

java - FTPClient(org.apache.commons.net.ftp.FTPClient) 无法检索大型 xml 文件

转载 作者:行者123 更新时间:2023-12-01 15:44:57 25 4
gpt4 key购买 nike

我的 ftp 位置有 3 个不同大小的文件,分别是 2KB、76KB 和 216MB。我必须一个接一个地处理这些文件,我可以使用retrieveFileStream(FILE_NAME_HERE)轻松检索前两个文件,但是当处理第三个文件时,它需要很长时间(我的应用程序一直挂起)而没有结果。我必须将文件作为输入流,并稍后从中创建 jaxb 对象。这是我用来获取输入流的实用方法:

public InputStream convertToInputStream(FTPFile file) throws IOException{
if(file!=null){
InputStream is=ftp.retrieveFileStream(file.getName());

ftp.completePendingCommand();
return is;

}

return null;

你能指出我在这里做错了什么吗?

最佳答案

这可能为时已晚,无法帮助您(但可能会帮助其他人),但是当我遇到类似的问题(上传和下载)时,我能够通过设置缓冲区大小 setBufferSize() 来解决它,连接后请参阅下面的代码片段。这将我上传 240MB 文件的时间从 12 分钟缩短到 18 秒,下载也有类似的改进。

我将 BUFFER_SIZE 设置为 32768,但 8192 几乎同样有效,特别是对于低于 50MB 的文件,之后尺寸较大时略有改善。

if (this.ftpClient.isConnected())
{
this.ftpClient.enterLocalPassiveMode();
this.ftpClient.setBufferSize(BUFFER_SIZE);
try
{
this.ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
}
catch (IOException e)
{
log.error(e.getLocalizedMessage(), e);
throw Throwables.propagate(e);
}
}

希望这有帮助。

关于java - FTPClient(org.apache.commons.net.ftp.FTPClient) 无法检索大型 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7247123/

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