我正在实现一个命令行的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);
}
答案 0 :(得分:0)
很明显有些事情多次调用println
。如果您不想要多行,请更改您的代码,使其不会这样做。
这既不是线程的“错误”,也不是println
的“错误”,它与刷新无关。问题在于你的代码的逻辑......但我们不能再说了,因为你还没有向我们展示。
答案 1 :(得分:0)
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
上运行时,其工作