java FTP下载文件在代码中如何实现知道下载完成?

java代码中FTP下载文件,在代码中如何能知道文件下载完成了?... java代码中FTP下载文件,在代码中如何能知道文件下载完成了? 展开
 我来答
chenjainlu
2015-07-22 · 超过19用户采纳过TA的回答
知道答主
回答量:36
采纳率:100%
帮助的人:25.3万
展开全部
public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){
try {
String ftpHost = kmConfig.getFtpHost();
int port = kmConfig.getFtpPort();
String userName = kmConfig.getFtpUser();
String passWord = kmConfig.getFtpPassword();
String path = kmConfig.getFtpPath();
FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。
ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码
ftpClient.binary();
ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。
try {
TelnetInputStream in = ftpClient.get(fileName);
byte[] bytes = new byte[1024];
int cnt=0;
while ((cnt=in.read(bytes,0,bytes.length)) != -1) {
outputStream.write(bytes, 0, cnt);
}
//##############################################
//这里文件就已经下载完了,自己理解一下
//#############################################

outputStream.close();
in.close();
} catch (Exception e) {
ftpClient.closeServer();
e.printStackTrace();
}
ftpClient.closeServer();
} catch (Exception e) {
System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动");
}
}
shewai12110
2015-07-22 · TA获得超过145个赞
知道答主
回答量:69
采纳率:0%
帮助的人:32.8万
展开全部
你好,可以写个方法,这个方法返回一个boolean类型,只要返回true,就说明已经完成,
具体如下:一般get过程完成后,为出错就说明文件已经下载完成。
public  boolean downloadFile(String hostname, int port,String username, String password, String remotePath,String remoteFilename, String savePath) {
long start=System.currentTimeMillis();
log.info("开始登陆SSH服务器"+hostname);
try {
if (sftp==null||!sftp.isConnected()) 
sftp=login(hostname, port, username, password);

if (sftp!=null&&session.isConnected()&&channel!=null&&channel.isConnected()&&session!=null&&session.isConnected()) {
log.info("登陆成功,开始转换到文件目录:"+remotePath);
if (remotePath !=null&&!remotePath.trim().equals("")) 
{
sftp.cd(remotePath);
File dir = new File(savePath);
if (!dir.exists()) 
    dir.mkdirs();
sftp.get(remoteFilename, savePath+remoteFilename);
log.info("成功从服务器上获取文件:"+remoteFilename+",耗时(秒):"+(System.currentTimeMillis()-start)/1000);
return true;
}
else
{
log.error("登陆失败:文件目录转换异常");
return false;
}
}
else
{
log.error("登陆失败:连接=null");
return false;
}

} catch (SftpException e) {
log.error("接收文件"+remoteFilename+"时有SftpException异常【可能文件不存在】!");
return false;

catch(Exception ex)
{
log.error("接收文件"+remoteFilename+"时有Exception异常:"+ex.getMessage());
return false;
}catch(Throwable t)
{
log.error("接收文件"+remoteFilename+"时有Throwable异常:"+t.getMessage());
return false;
}finally 
{
close();
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式