我正在使用FTPClient从我的FTP服务器下载文件,其中充满了zip文件夹,其中包含一个到多个.txt
文件。它们的大小可能很大,例如10GB。
我要做的是,无需从FTP下载zip归档文件,而是读取它拥有的第一个.txt
文件的名称。保证其中将至少有1个.txt
文件。
我读了一篇非常有趣的文章here,但它在.NET
中,他们使用的远程URL与我的情况不同。
zip格式定义了某种指向其所有内部条目的目录。包含名称,起始偏移量,大小和其他内容之类的属性。而且该目录非常小,仅在归档文件的最后放置了几个字节。
我如何使用FTPCient解决它?
答案 0 :(得分:0)
据我所知,没有其他答案。
输入示例(“ ftp-folder / input.txt” ):
public String getZipFirstEntryName(final String remotePath) {
this.log.info("ENTERING getZipFirstEntry, remotePath={} ", remotePath);
/* Setup FTP connection */
final FTPClient ftpClient = this.setupFtpConnection();
try {
ftpClient.changeWorkingDirectory(remotePath.split("/")[0]); /* ftp-folder */
} catch (final IOException e) {
e.printStackTrace();
}
try (final ZipArchiveInputStream zip = new ZipArchiveInputStream(ftpClient.retrieveFileStream(remotePath.split("/")[1]))) { /* input.txt */
this.log.info("EXITING getZipFirstEntry, remotePath={} ", remotePath);
return zip.getNextEntry().getName();
} catch (final IOException e) {
e.printStackTrace();
}
}