gpt4 book ai didi

java - 使用 commons.net FTPClient 下载后 Tar.gz 损坏

转载 作者:行者123 更新时间:2023-11-30 09:30:11 26 4
gpt4 key购买 nike

我正在尝试从 FTP 服务器(通过 HTTP 代理)下载 tar.gz 文件。虽然通过代理连接的麻烦已经解决(我能够从 FTP 站点读取常规文件),但我能够将文件下载到我的 table ​​面(显然是开发人员机器)。但是,当我尝试扩充该文件时,出现异常。以下是我的代码片段

if (CollectionUtils.isNotEmpty(filesList)) {
for (String fileName : filesList) {
if (fileName.endsWith(getArchiveFileType())) {
// File is a tar.gz file.
// Download this file to a local directory
FtpDownloadMethod downloadMethod = new FtpDownloadMethod();
OutputStream output = new FileOutputStream(getOutputDirectory() + fileName);
downloadMethod.setFileTransferMode(FTPClient.COMPRESSED_TRANSFER_MODE);
downloadMethod.setOutput(output);
downloadMethod.setUri(fileName);
isDownloaded = isDownloaded && getServiceProxy().executeMethod(downloadMethod).isSuccess();
output.close();
}
}
}

这是执行传输的实际方法。

String uri; //method arguements
OutputStream output; //method arguements

DefaultFtpResponse response = null;

try {
response = new DefaultFtpResponse();

boolean success = false;

if (StringUtils.isBlank(getUri())) {
response.setStatusCode(FTPReply.FILE_UNAVAILABLE);
} else {
aFtpClient.connect();
aFtpClient.enterLocalPassiveMode();
aFtpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
aFtpClient.setFileTransferMode(getFileTransferMode());
success = aFtpClient.retrieveFile(uri, output);
response.setSuccess(success);
response.setStatusCode(FTPReply.COMMAND_OK);
}
} catch (Exception exp) {
LOGGER.error(exp);
}

return response;

这段代码创建了一个文件,我可以看到在所需的输出文件夹中创建了一个文件。下载后,当我尝试解压缩下载的文件时,我看到了这个错误。

    java.util.zip.ZipException: oversubscribed literal/length tree

我也尝试了 BLOCK_TRANSFERR_MODE 和 BINARY_TRANSFER_MODE。

最佳答案

上传的文件已损坏。我试图以二进制传输模式上传。将其更改为压缩传输模式后,我就可以处理文件了。

关于java - 使用 commons.net FTPClient 下载后 Tar.gz 损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13352312/

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