设为首页 收藏本站
查看: 998|回复: 0

[经验分享] wget ftp 下载文件java代码

[复制链接]

尚未签到

发表于 2016-6-9 11:46:28 | 显示全部楼层 |阅读模式
private boolean wget(String file) {
// wget file
// targetDir must has been created, or cleared if necessary
DirUtils.mkDir(targetDir + "/" + UrlParser.getFilePath(file));
String orig_url = file;

String localFile = targetDir + "/" + file;

file = remoteServerConf.getProtocol() + "://" + file;
String cmd = "wget -t3 -T60 -c " + file + " -O " + localFile;
if (remoteServerConf.getProtocol().equalsIgnoreCase("ftp") == true
&& remoteServerConf.getFTPMode() == 0) {
cmd += " --no-passive-ftp";
}

if (remoteServerConf.getUser() != null && !remoteServerConf.getUser().isEmpty()) {
cmd += " --user " + remoteServerConf.getUser();
cmd += " --password " + remoteServerConf.getPassword();
}

String[] cmds = { "/bin/bash", "-c", cmd };

logger.info("start to exec \t" + cmd);

BufferedReader br = null;
int result = -1;

// 5850K .......... .......... .......... .......... .......... 97% 923K
// 0s
// 350K ,,,,,,, 100% 0.00 =0s
// 0K .......... .......... .......... .......... .......... 0% 309K 19s
// 50K .......... .......... .......... .......... .......... 1% 928K
// 13s
Matcher matcher = Pattern.compile("^\\s*(\\d+)K", Pattern.CASE_INSENSITIVE)
.matcher("");
try {
Runtime t = java.lang.Runtime.getRuntime();
Process p = t.exec(cmds);
br = new BufferedReader(new InputStreamReader(p.getErrorStream()));

long prev_report_size = -(this.reportSizeInterval);
long curr_size = -(this.reportSizeInterval);

String msg = null;
while ((msg = br.readLine()) != null) {
// try to get download size
matcher.reset(msg);
if (matcher.find()) {
curr_size = Long.parseLong(matcher.group(1)) * 1024;

// System.out.println("curr_size: " + curr_size + "\t" +
// file);
if ((curr_size - prev_report_size) >= this.reportSizeInterval) {
updateDownloadSize(curr_size);
// logger.info("Has downloaded: " + curr_size + "\t" +
// file);
prev_report_size = curr_size;
}
}

// try to get length
// Length: 1181995 (1.1M)
// Length: 6213828 (5.9M), 4856852 (4.6M) remaining
// [application/octet-stream]
// Length: 366356 (358K)
// Length: 1181995 (1.1M), 1172559 (1.1M) remaining
else if (msg.startsWith("Length")) {
String[] fields = msg.split(" +");
if (fields.length > 1) {
this.length = Long.parseLong(fields[1]);
updateTotalLength(this.length);
logger.info("Total Length: " + length + "\t" + file);
}
}
}
br.close();

result = p.waitFor();

if (result == 0) {
if (uncompress(orig_url) != true)
{
logger.error("failed to uncompress the file" + orig_url);
}
else
return true;
}

} catch (IOException e) {
logger.error("IOException in wget " + file, e);
} catch (InterruptedException e) {
logger.error("InterruptedException in wget " + file, e);
} finally {
try {
br.close();
} catch (IOException e) {
logger.error("IOException in closing buffer reader  " + file, e);
}
}

return result == 0 ? true : false;
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-228213-1-1.html 上篇帖子: Java 中FTP下载和上传 下篇帖子: 使用commons-net包实现ftp服务器的访问
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表