gpt4 book ai didi

java - 如何使用 FTP 协议(protocol)恢复读取输入流

转载 作者:行者123 更新时间:2023-11-30 04:38:12 25 4
gpt4 key购买 nike

我正在学习 Java OOP。我的程序通过 FTP 下载文件。我想在再次启动时继续下载。这是我的代码:

URL urlName = new URL(url);
URLConnection con = urlName.openConnection();
BufferedInputStream in = new BufferedInputStream(con.getInputStream());

int i = 0;
long downloadedSizeKB;
System.out.println("before skip");
long k = in.skip(counter);
System.out.println(k);
byte[] bytesIn = new byte[1024];
while ((i = in.read(bytesIn)) >= 0) {
if(counter >= alreadyDownloadedBytes) {
out.write(bytesIn, 0, i);
downloadedSizeKB = counter/1024;
downSize.setText(downloadedSizeKB + " KB downloaded...");

while(isPaused) {
downSize.setText(downloadedSizeKB + " KB PAUSED");
Thread.sleep(1000);
}
}
counter += i;
}

in.close();

首先,我尝试读取它与之前下载的文件的长度一样多,然后从该点恢复读取和写入。在恢复下载之前读取文件需要花费太多时间(大约 100MB 需要 1-2 分钟)。之后我意识到有一个跳过方法,但我想它会做同样的事情,因为它花费的时间几乎相同。

有没有更快的方法来从文件的特定字节开始读取文件?或者我应该以其他方式做到这一点?或者这是唯一的方法?

最佳答案

您可以使用 apache.commons.net.ftp.FTPClient(位于 commons-net.jar 库中)。

你有方法:setRestartOffset(yourOffset),在检索文件之前使用它,文件数据将从指定的偏移量开始。

关于java - 如何使用 FTP 协议(protocol)恢复读取输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12929931/

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