前言

最近在写一个命令行中的下载工具,既然是下载文件用的,那么实时显示下载进度是非常有必要的。因此,就有了这里对进度条的实现尝试。

预览图

还是先预览下效果图吧。

这里是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实现命令行中的进度条功能相关推荐

  1. 【转帖】windows命令行中java和javac、javap使用详解(java编译命令)

    windows命令行中java和javac.javap使用详解(java编译命令) 更新时间:2014年03月23日 11:53:15   作者:    我要评论 http://www.jb51.ne ...

  2. java main 命令行_java Main 命令行

    CLI 即Command Line Interface,也就是"命令行接口",它为Java 程序访问和解析命令行参数提供了一种统一的接口. apache Commons CLI为用 ...

  3. 类写了package java命令出错_java/javac命令行如何同时引用多个包;错误 TypeError: 'JavaPackage' object is not callable 的含义...

    出现这类错误提示:'JavaPackage' object is not callable,可以看下所引用的jar包或者class文件是否在java的路径搜索范围内 命令行模式下:javac可以编译* ...

  4. 学以致用——命令行中使用Java模块化技术编译、打包、运行iKb知识库应用

    需求说明 Eclipse环境下,由于未知原因,运行的iKb知识库应用界面不稳定(有时全屏,有时会缩小很多,导致界面可读性很差),如下图所示: 这个问题随着本人所使用的的JDK版本和Eclipse版本的 ...

  5. java main命令行参数_java使用命令行参数

    有时你想在运行程序时将信息传递到一个程序中.这通过将命令行参数(command-line arguments )传递给main() 来实现.命令行参数是程序执行时在命令行中紧跟在程序名后的信息.在Ja ...

  6. Curl学习日记3 - 在Linux命令行中使用Curl

    在Linux命令行中使用Curl 目录 在Linux命令行中使用Curl 1. linux curl抓取网页: 2. Linux curl使用http代理: 3.使用socks代理抓取页面: 4. l ...

  7. 在命令行中通过adb shell am broadcast发送广播通知以及Android的常用adb命令

    转载自:http://www.cnblogs.com/622698abc/archive/2013/06/11/3132306.html?utm_source=tuicool 通过命令行执行adb s ...

  8. java 启动 jetty_如何通过命令行启动或者关闭 Jetty 服务器

    https://my.oschina.net/bairrfhoinn/blog/82638 我亲爱的 Java 程序员朋友们,你们好,今天我想给大家分享壹个我遇到的问题以及解决它的方法.有人分配给我壹 ...

  9. mysql命令行批量添加数据_mysql命令行批量插入100条数据命令

    先介绍一个关键字的使用: delimiter 定好结束符为"$$",(定义的时候需要加上一个空格) 然后最后又定义为";", MYSQL的默认结束符为" ...

最新文章

  1. Storyboard初体验
  2. 集成运放组成的电压比较器
  3. Web开发-Django表单
  4. 用c语言递归函数做扫雷,【C语言基础学习---扫雷游戏】(包含普通版+递归炼狱版)...
  5. 鸿蒙os更新要求,华为鸿蒙OS即将迎来升级 手机版本或仍需时间
  6. 扩展 KMP(模板) 洛谷P5410
  7. GitHub提速方法大揭秘,10M速度使用无忧
  8. 黑龙江省:到2025年将建成5G基站11.4万个
  9. java 整型变量,Java 整型变量
  10. python脚本第一行_python脚本第一行如何写
  11. Oracle中级篇-物化视图
  12. 【Apple苹果设备刷机】ipad已停用,iTunes无法联系网络等问题
  13. 贪吃蛇游戏-小程序游戏
  14. CSharpGL(13)用GLSL实现点光源(point light)和平行光源(directional light)的漫反射(diffuse reflection)...
  15. 【013】如何给EXCEL编写的宏设置打开密码_#VBA
  16. 亚马逊FBA相关术语介绍
  17. 解决:你的博文 XXXX 因涉及“版权不明”, 审核未通过,您可以修改相关内容后再次发布。
  18. 5.临床预测模型的构建--cox回归分析
  19. 分享4个不为人知的高质量APP,每一个都实力爆棚!
  20. [导入]ACSII码对照表

热门文章

  1. Hash 碰撞是什么?如何解决?
  2. GPT4 和大型语言模型如何改变现代社会
  3. 什么是报修系统?如何选择报修系统?
  4. 无代码系统搭建“服装行业管理系统”
  5. Scala在window上安装及基本概述(变量,数据类型,插值器,条件循环,数组,元祖,集合)
  6. 浅谈Redis的隐性成本
  7. 设计一个控制台应用程序项目,通过委托方式求两个整数的和差积商模
  8. excel学习-数据透视表(自动分组+手动分组+制作动态数据源)
  9. 外贸新手如何把控跟进客户,附11个常见的外贸客户类型及如何回复跟进
  10. 重审新消费品牌的长远发展