[英]Flushing single Console line in Java
我正在實現一個MP3播放器,它是命令行。
我想顯示這樣的mp3持續時間
Now Playing :: hello.mp3 Duration :: 1.20
但是當我使用System.out.println時,它顯示
Now Playing :: hello.mp3 Duration :: 1.20
Now Playing :: hello.mp3 Duration :: 1.21
Now Playing :: hello.mp3 Duration :: 1.22
Now Playing :: hello.mp3 Duration :: 1.23
Now Playing :: hello.mp3 Duration :: 1.24
Now Playing :: hello.mp3 Duration :: 1.25
.....
基本上,持續時間是通過線程更新的,我想將其顯示為一行,這意味着持續時間必須在一行中進行更新。 我看到了Flushable interface
但沒有得到。 請幫幫我
這是我的話題
while(p.getPlayer().isComplete() == false){
String bOutput = "\r Duration ::" + (int) ((p.getPlayer().getPosition() / (1000*60)) % 60) + " : " + (int) (p.getPlayer().getPosition() / 1000) % 60;
//p.getBufferedOutputStream().write(bOutput.getBytes());
//p.getBufferedOutputStream().flush();
System.out.println(bOutput);
Thread.sleep(1000);
}
很明顯,有些東西多次調用println
。 如果您不希望多行,請更改您的代碼,使其不會這樣做。
這既不是線程的“故障”,也不是println
的“故障”,與沖洗無關。 問題出在代碼的邏輯上……但是我們不能再說了,因為您還沒有向我們展示。
while(p.getPlayer().isComplete() == false){
String bOutput = "Duration ::" + (int) ((p.getPlayer().getPosition() / (1000*60)) % 60) + " : " + (int) (p.getPlayer().getPosition() / 1000) % 60;
System.out.println(bOutput+"\r");
Thread.sleep(1000);
}
這是解決我的問題。
注意: 我在Eclipse Console
中看不到任何效果,當我在CMD
上運行它時,它的工作原理
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.