java进度条_Java实现命令行中的进度条功能
前言
最近在写一个命令行中的下载工具,既然是下载文件用的,那么实时显示下载进度是非常有必要的。因此,就有了这里对进度条的实现尝试。
预览图
还是先预览下效果图吧。
这里是cmd里面的效果,总体看着还行,不足之处就是可以看到前面的游标在闪烁。
这里是IDEA里面运行的效果图,由于字符间距都比较大,所以这里看着效果不怎么好。
原理
这里关键是用到了这个函数
System.out.print("\b");
其中转义符\b的作用就是删除游标前面的一个字符。
这里举个栗子:
System.out.print("hello,world!");
System.out.print("\b\b");
执行完第一行后是输出了
hello,world!
注意这里都用的都是print函数,而不是println函数。
执行到第二行后,输出就变为了
hello,worl
因为有两个\b,所以删除两个字符,因此删掉了d和!,还剩下hello,worl
原理懂了之后,剩下的效果实现应该是非常简单了。下面直接上代码吧。
代码
Talk is cheap,show me the code! ------ 屁话少说,放码过来!
public class ProgressBar {
private int index = 0;
private String finish;
private String unFinish;
// 进度条粒度
private final int PROGRESS_SIZE = 50;
private int BITE = 2;
private String getNChar(int num, char ch){
StringBuilder builder = new StringBuilder();
for(int i = 0; i < num; i++){
builder.append(ch);
}
return builder.toString();
}
public void printProgress() throws InterruptedException {
System.out.print("Progress:");
finish = getNChar(index / BITE, '█');
unFinish = getNChar(PROGRESS_SIZE - index / BITE, '─');
String target = String.format("%3d%%[%s%s]", index, finish, unFinish);
System.out.print(target);
while (index <= 100){
finish = getNChar(index / BITE, '█');
unFinish = getNChar(PROGRESS_SIZE - index / BITE, '─');
target = String.format("%3d%%├%s%s┤", index, finish, unFinish);
System.out.print(getNChar(PROGRESS_SIZE + 6, '\b'));
System.out.print(target);
Thread.sleep(50);
index++;
}
}
}
java进度条_Java实现命令行中的进度条功能相关推荐
- 【转帖】windows命令行中java和javac、javap使用详解(java编译命令)
windows命令行中java和javac.javap使用详解(java编译命令) 更新时间:2014年03月23日 11:53:15 作者: 我要评论 http://www.jb51.ne ...
- java main 命令行_java Main 命令行
CLI 即Command Line Interface,也就是"命令行接口",它为Java 程序访问和解析命令行参数提供了一种统一的接口. apache Commons CLI为用 ...
- 类写了package java命令出错_java/javac命令行如何同时引用多个包;错误 TypeError: 'JavaPackage' object is not callable 的含义...
出现这类错误提示:'JavaPackage' object is not callable,可以看下所引用的jar包或者class文件是否在java的路径搜索范围内 命令行模式下:javac可以编译* ...
- 学以致用——命令行中使用Java模块化技术编译、打包、运行iKb知识库应用
需求说明 Eclipse环境下,由于未知原因,运行的iKb知识库应用界面不稳定(有时全屏,有时会缩小很多,导致界面可读性很差),如下图所示: 这个问题随着本人所使用的的JDK版本和Eclipse版本的 ...
- java main命令行参数_java使用命令行参数
有时你想在运行程序时将信息传递到一个程序中.这通过将命令行参数(command-line arguments )传递给main() 来实现.命令行参数是程序执行时在命令行中紧跟在程序名后的信息.在Ja ...
- Curl学习日记3 - 在Linux命令行中使用Curl
在Linux命令行中使用Curl 目录 在Linux命令行中使用Curl 1. linux curl抓取网页: 2. Linux curl使用http代理: 3.使用socks代理抓取页面: 4. l ...
- 在命令行中通过adb shell am broadcast发送广播通知以及Android的常用adb命令
转载自:http://www.cnblogs.com/622698abc/archive/2013/06/11/3132306.html?utm_source=tuicool 通过命令行执行adb s ...
- java 启动 jetty_如何通过命令行启动或者关闭 Jetty 服务器
https://my.oschina.net/bairrfhoinn/blog/82638 我亲爱的 Java 程序员朋友们,你们好,今天我想给大家分享壹个我遇到的问题以及解决它的方法.有人分配给我壹 ...
- mysql命令行批量添加数据_mysql命令行批量插入100条数据命令
先介绍一个关键字的使用: delimiter 定好结束符为"$$",(定义的时候需要加上一个空格) 然后最后又定义为";", MYSQL的默认结束符为" ...
最新文章
- Storyboard初体验
- 集成运放组成的电压比较器
- Web开发-Django表单
- 用c语言递归函数做扫雷,【C语言基础学习---扫雷游戏】(包含普通版+递归炼狱版)...
- 鸿蒙os更新要求,华为鸿蒙OS即将迎来升级 手机版本或仍需时间
- 扩展 KMP(模板) 洛谷P5410
- GitHub提速方法大揭秘,10M速度使用无忧
- 黑龙江省:到2025年将建成5G基站11.4万个
- java 整型变量,Java 整型变量
- python脚本第一行_python脚本第一行如何写
- Oracle中级篇-物化视图
- 【Apple苹果设备刷机】ipad已停用,iTunes无法联系网络等问题
- 贪吃蛇游戏-小程序游戏
- CSharpGL(13)用GLSL实现点光源(point light)和平行光源(directional light)的漫反射(diffuse reflection)...
- 【013】如何给EXCEL编写的宏设置打开密码_#VBA
- 亚马逊FBA相关术语介绍
- 解决:你的博文 XXXX 因涉及“版权不明”, 审核未通过,您可以修改相关内容后再次发布。
- 5.临床预测模型的构建--cox回归分析
- 分享4个不为人知的高质量APP,每一个都实力爆棚!
- [导入]ACSII码对照表