gpt4 book ai didi

java - 从 FTP 服务器下载文件时如何显示 JProgressBar

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:21:53 28 4
gpt4 key购买 nike

我正在使用 apache commons-net 从 FTP 服务器下载文件。这么多工作正常。我遇到问题的部分是使用 JProgressBar 显示下载进度。

以下代码演示了我如何下载我需要的文件:

public void download() {
try {
FTPClient ftpClient = new FTPClient();

String fileName = "OFMEX_MANUFACTURING.jar";

ftpClient.connect("192.168.1.242");
int replyCode = ftpClient.getReplyCode();

if (!FTPReply.isPositiveCompletion(replyCode)) {
JOptionPane.showMessageDialog(null, "Server Down");
}

boolean login = ftpClient.login("bioftp", "bioftp");

boolean changeWorkingDirectory = ftpClient.changeWorkingDirectory("ofmex\\Linux\\");
boolean setFileType = ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

ftpClient.enterLocalPassiveMode();

OutputStream data = (OutputStream) new FileOutputStream(fileName);

ftpClient.retrieveFile(fileName, data);
ftpClient.abort();
} catch (Exception e) {
e.printStackTrace();
}
}

最佳答案

如果您要直接调用 retriveFile(),那么您可能无法知道传输了多少字节。相反,您可以逐字节检索文件并记录传输的每个字节。您还可以获取要传输的总字节数,以便计算要在进度条中显示的百分比。

InputStream stSource = new FileInputStream(locFile);
OutputStream stDest = new BufferedOutputStream(ftp.storeFileStream(remFile), ftp.getBufferSize());

Util.copyStream(stSource, stDest, ftp.getBufferSize(),CopyStreamEvent.UNKNOWN_STREAM_SIZE, new CopyStreamAdapter() {
public void bytesTransferred(long totalBytesTransferred,int bytesTransferred, long streamSize) {
long megsTotal = 0;
long megs = totalBytesTransferred / 1048576;

for (long l = megsTotal; l < megs; l++) {
System.err.print("|");
}

megsTotal = megs;
}
});

参见 this上面代码中使用的 apache commons util。

关于java - 从 FTP 服务器下载文件时如何显示 JProgressBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11243217/

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