1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
import java.util.concurrent.Executors import java.util.concurrent.ScheduledExecutorService import java.util.concurrent.TimeUnit fun main() { val totalSteps = 100 // Número total de pasos de la barra de progreso val progressBarWidth = 50 // Ancho de la barra de progreso en caracteres val updateInterval = 100 // Intervalo de actualización en milisegundos val executor: ScheduledExecutorService = Executors.newScheduledThreadPool(1) val progressBar = StringBuilder("[") for (i in 0 until progressBarWidth) { progressBar.append(" ") } progressBar.append("]") print(progressBar) val task = Runnable { for (step in 0..totalSteps) { val progress = (step * progressBarWidth) / totalSteps // Llena la barra de progreso for (i in 1 until progress) { progressBar.setCharAt(i, '=') } val percentage = (step * 100) / totalSteps val percentageString = String.format("%3d%%", percentage) progressBar.replace(progressBarWidth + 2, progressBarWidth + 7, percentageString) print("\r$progressBar") Thread.sleep(updateInterval.toLong()) } executor.shutdown() } executor.scheduleAtFixedRate(task, 0, updateInterval.toLong(), TimeUnit.MILLISECONDS) } |