簡體   English   中英

用Java刷新單個控制台行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM