问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-01 21:51

我来回答

2个回答

热心网友 时间:2022-06-24 00:27

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服务启动");
}
}

热心网友 时间:2022-06-24 00:27

你好,可以写个方法,这个方法返回一个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();
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
wps字体颜色改不了怎么办 玩lol我想走体格极端蛮王全攻击的那种符文怎么加求高手赐教 ,感激不... ...觉得不会玩,求高手赐教,个人觉得钱不够买装备,发育慢 ...加技能点,可以通地狱的,我玩的是1.11的,只为单机,求高手赐教... ...只有R技能的AD加成较高,为什么选AD呢,请高手赐教 lol小丑什么打法好(我现在用的是物攻流)出装也说说~请高手赐教~... 北京首都医科大附属附属复兴医院门诊部地址 首都医科大学附属医院首都医科大学附属复兴医院 北京复兴医院规模 求海贼王动画中所有红发香克斯的出镜 Apache SSHD实现SFTP服务端,客户端访问进行远程文件上传下载 python,求助,服务器走的sftp协议,怎么获取上面的文件 U盘中视频文件损坏怎么恢复 VB如何连接sftp下载文件? 我用的广西广电三网合一机顶盒电脑用本地连接的时候电脑显示感叹号 广西广电网络入户要拉几根线? 佛经中讲的三宝指的是什么? 佛教三宝是? 佛教中的三宝指的是 事业单位现场问答属于什么形式 佛家三宝指的是哪三宝 重庆现在还能进行现场面试吗 佛教的三宝指的是什么 佛家三宝指的是什么 成都龙泉教师招聘面试的方式? Vmware Esxi 5.5.0无法识别硬盘。 游戏王魔法卡和陷阱卡都是在什么时候发动? 女生痛经吃茄子有用吗?痛经该怎么办? 虚拟机问题 exsi5.5 现在安装好了 但是里面没有硬盘块数RIAD卡信息 游戏王魔法卡是怎么玩的? 用java写一个sftp客户端程序 能够上一个sftp的目录下载文件到本地指定目录 用java实现sftp下载,报2: No such file 视频文件从电脑拉进U盘损坏了能修复吗 拯救者r7000刷新率60hz能提升吗 如何在windows环境下用sftp 连接服linux务器 上传下载文件》? windows 下cmd 通过sftp命令 怎样访问linux服务器下的文件目录并下载,为什么我的sftp用不了 U盘里损坏的文件怎样修复呢? 跪求在linux中实现SFTP的源代码 迅雷如何下载SFTP文件 u盘上存储的电影损坏了怎么样可以修复 java 怎么读取sftp上的文件 文件上传sftp文件名显示乱码怎么破 联想Legion r70002020怎么修改屏幕刷新率? 一个手机如何同时登录两个? TBHQ是什么? 一个手机登两个怎么登? TBHQ是啥意思 华龙方便面中的TBHQ是什么? 关于食品添加剂TBHQ. 一个手机如何同时登录两个?