行の先頭に戻って、すでにコンソールに出力されているものを上書きするにはどうすればよいですか?以下は機能していないようです。
System.out.print(mystuff+'\r');
カーソルISが行の先頭に移動しているようです。何も上書きしていないので、既にあるテキストは消えません。行を空白にするためにスペースを出力できます次に、別の\ rを追加します。
私はWindows XPおよびAIXで以下をテストしましたが、期待どおりに動作します:
public class Foo {
public static void main(String[] args) throws Exception {
System.out.print("old line");
Thread.sleep(3000);
System.out.print("\rnew");
}
}
「古いライン」が印刷され、3秒遅れて、「古いライン」が「新しいライン」に変わります。
1行目を2行目よりも長くしたのは、行全体を消去したい場合は、末尾をスペースで上書きする必要があることを示すためです。
また、「\ b」エスケープシーケンスは、行頭ではなく1スペース分バックアップします。したがって、最後の2文字だけを消去したい場合は、次のように書くことができます。
System.out.println("foo\b\bun")
「楽しみ」を得る。
私の推測(そしてそれは推測です)では、「\ r」は機能しますが、使用しているコンソールでは期待どおりに処理されません。どのコンソールを使用していますか? IDEのコンソール出力のようなものであれば、代わりに実際のコマンドラインで試してみましたか?
コンソールに新しい行を書き込むだけの場合は、println()メソッドを使用する必要があります。
System.out.println(mystuff);
ただし、これはすでに行にあるものを削除しません。実際には、System.outはOutputStreamの一種であるPrintStreamであるため、端末固有の方法を見つけることはできますが、基本的にそれは困難です。
Java cursesライブラリの実装-- JavaCurses など)を使用すると幸運になるかもしれません。