开发中业务操作相关的记录-15行Java代码实现一个标准输出的进度条-《Java笔记》

admin 2025-10-19 03:20:59 编程 来源:ZONE.CI 全球网 0 阅读模式

    Java进度条在日常使用的软件中已经很频繁了,不过除了安装软件一般都是在网页中看到,那如何在标准输出中实现一个进度条呢?光有想法是不行,接下来就开始实践一下,通过 Java 代码在标准输出中实现一个类似的进度条。首先看到一个进度条是从 0 加载到 100 的一个过程,实现进度条需要一个最终的状态,然后逐渐从无到有变化形成,所以要有一个百分比显示,其次要有两种不一样的样式变化。可以通过先展示一种符合为百分百,然后不断通过替换新的符合,产生一种变化的效果,这里采用下面这两种符号来表示

    1. char incomplete = '░'; // U+2591 Unicode Character 表示还没有完成的部分
    2. char complete = '█'; // U+2588 Unicode Character 表示已经完成的部分

    通过用完成的符号不断地替换未完成的符号,形成一种不断在进行的效果。接下来实现一个静态方法,首先通过Stream.generate(),创建未完成的部分,这里用 StringBuilder 来创建字符串对象,通过 append 方式来填充,形式如下 Stream.generate(() -> incomplete).limit(total).forEach(builder::append);这里 total 设置成 100,限制一下长度。再通过一个 for 循环来不断的替换未完成中的部分,将字符挨个替换为完成的字符,builder.replace(i, i + 1, String.valueOf(complete));。这里有三个需要需要的地方

    1. 进度条始终展示在一行,并没有换号,所以要用System.out.print() 方法输出,不能用 System.out.println(); 方法来输出;
    2. 如果直接通过System.out.print(); 输出的话,会发现虽然在同一行出现,但是会越来越长,如下所示,每次循环的字符串会接在后面,这样是不行的。所以这里需要使用到回车符号,大家都知道\r\n,用来回车和换行,其实这种两个符号\r 是回车,\n 是换行。回车是将光标移动到行首,换行则是将光标移动的下一行

    15 行 Java 代码实现一个标准输出的进度条 - 图1

    1. 进度条会根据网络和资源包大小下载的时候慢慢变化的,所以要有一定的速度,不能一下子就完成了,这里可以简单通过 Thread.sleep() 来实现;

    所以在代码修改成如下所示,这里为了表示越到后面越慢的场景,这边的 sleep 不是一个固定的数值。

    1. for (int i = 0; i < total; i++) {
    2. builder.replace(i, i + 1, String.valueOf(complete));
    3. String progressBar = "\r" + builder;
    4. String percent = " " + (i + 1) + "%";
    5. System.out.print(progressBar + percent);
    6. try {
    7. Thread.sleep(i * 5L);
    8. } catch (InterruptedException ignored) {
    9. }
    10. }

    15 行 Java 代码实现一个标准输出的进度条 - 图2至此一个基于 Java 标准输出的进度条就实现了,只要思考情况,实现起来还是很简单的,只是其中有几个知识点知道就行了。重点就是要知道如何实现将光标移动的行首,可能符号都认识,只是平时没想到还可以这样使用。

    以太坊cppgolang区别 编程

    以太坊cppgolang区别

    以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
    progolang 编程

    progolang

    Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
    golangn个发送者 编程

    golangn个发送者

    Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
    golang技能图谱 编程

    golang技能图谱

    从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
    评论:0   参与:  6