以下是一个简单的Java文件读取的进度条示例:
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class FileProgressBar { public static void main(String[] args) { String filePath = "path_to_your_file"; try (InputStream inputStream = new FileInputStream(filePath)) { long fileSize = inputStream.available(); long bytesRead = 0; byte[] buffer = new byte[1024]; int read; while ((read = inputStream.read(buffer)) != -1) { bytesRead += read; printProgressBar(bytesRead, fileSize); } System.out.println("\nFile read successfully!"); } catch (IOException e) { e.printStackTrace(); } } private static void printProgressBar(long bytesRead, long fileSize) { int progress = (int) (bytesRead * 100 / fileSize); String progressBar = "["; int barWidth = 50; int filledWidth = (int) (barWidth * progress / 100.0); for (int i = 0; i < barWidth; i++) { if (i < filledWidth) { progressBar += "="; } else { progressBar += " "; } } progressBar += "] " + progress + "%"; System.out.print("\r" + progressBar); } }
在上面的示例中,我们使用FileInputStream
来读取文件,并使用InputStream.available()
方法获取文件的大小。然后,在每次读取buffer
时,我们更新已读取的字节数,并通过printProgressBar
方法打印进度条。
printProgressBar
方法使用\r
来在控制台上覆盖上一行的输出,以实现动态更新进度条的效果。进度条的长度为50个字符,根据已读取的字节数和文件大小的比例计算填充的宽度,并将进度以百分比形式显示。
注意:在使用这个示例之前,你需要将path_to_your_file
替换为你要读取的文件的路径。