コードから出力を取得するために console() の代わりに buffer を使用する場合の違いは何ですか?
2 に答える
によって使用されるConsole
クラスは、WindowsのウィンドウやUnixライクなシステムの端末などの実際のコンソールによって提供される、インタラクティブな文字ベースのI/OをSystem.console()
対象としているようです。そのため、基盤となるOSやJVMの起動方法によっては、システムコンソールが常に使用できるとは限りません。cmd.exe
一方、Scanner
ファイルや標準入力を含むすべての入力ストリームで動作します。より柔軟性がありますがConsole
、テキスト(通常はパスワード)をコンソールにエコーバックせずに読み取る機能など、コンソール固有の機能は提供されません。
このConsole
クラスを使用すると、コマンド ラインからの入力 (エコーありとエコーなしの両方) を簡単に受け入れることができます。Unechoed とは、Facebook でパスワードを入力するときのように、テキスト (*、? など) を書いているときにコンソールに特殊文字が表示されることを意味します。:) そのformat()
方法により、フォーマットされた出力をコマンドラインに簡単に書き込むことができます(* のピラミッドやフォーマットされた日付と通貨フォーマットなどを作成するなど)。また、単体テスト用のテスト エンジンを作成するのにも役立ちます。または、本当にシンプルで小さなアプリケーションを作成する場合に備えて、GUI (グラフィカル ユーザー インターフェイス) の代わりにシンプルな CLI (コマンド ライン インターフェイス) を提供するために使用できます。はい、これはシステム依存でもあります。つまり、常にシステムに依存してコンソール インスタンスを提供できるわけではありません。
バッファリングについてですが、実際には、ストリーム (文字ストリームかバイト ストリームか、コンソールかソケットかファイルか) とやり取りするときに I/O (つまり、入力と出力の両方) で使用される手法です。基本的に、メソッドread()
とwrite()
メソッドの複数回の呼び出しを避けることで、I/O を高速化し、システム リソースを節約するために使用されます。ほぼすべての種類の I/O 相互作用で使用することをお勧めします。