Hallo, ich habe einen Prozess der einen gewissen Zeitraum dauert (video converter ffmpeg) ich habe eine art Progressbar in meiner Konsole (ohne gui) und möchte den Endwert als 100% festlegen. Da dieser Wert immer individuell ist, (je nach video also andere progressdauer) habe ich das problem dass ich nicht weis wie genau ich diesen individuellen Endwert festlegen soll
hier die "Progressbar"
hier die "Progressbar"
Java:
import java.util.Collections;
import java.util.concurrent.TimeUnit;
public class progress {
public static void main(String[] args) {
//dauer des Prozess
long total = 3357;
long startTime = System.currentTimeMillis();
for (int i = 1; i <= total; i = i + 3) {
try {
Thread.sleep(50);
printProgress(startTime, total, i);
} catch (InterruptedException e) {
}
}
}
private static void printProgress(long startTime, long total, long current) {
long eta = current == 0 ? 0 :
(total - current) * (System.currentTimeMillis() - startTime) / current;
String etaHms = current == 0 ? "N/A" :
String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(eta),
TimeUnit.MILLISECONDS.toMinutes(eta) % TimeUnit.HOURS.toMinutes(1),
TimeUnit.MILLISECONDS.toSeconds(eta) % TimeUnit.MINUTES.toSeconds(1));
StringBuilder string = new StringBuilder(140);
int percent = (int) (current * 100 / total);
string
.append('\r')
.append(String.join("", Collections.nCopies(percent == 0 ? 2 : 2 - (int) (Math.log10(percent)), " ")))
.append(String.format(" %d%% [", percent))
.append(String.join("", Collections.nCopies(percent, "=")))
.append('>')
.append(String.join("", Collections.nCopies(100 - percent, " ")))
.append(']')
.append(String.join("", Collections.nCopies((int) (Math.log10(total)) - (int) (Math.log10(current)), " ")))
.append(String.format(" ETA: %s", etaHms));
System.out.print(string);
}
}