標準のコンソール I/O ストリームを閉じた後、実行中にそれらを再度開くことはできますか?
public static void main(String[] args) throws IOException {
System.out.println("Hello World!!!");
System.out.println("1:" + System.in.read());
System.out.println("" + FileDescriptor.in.valid()); //true
System.in.close();
System.out.println("" + FileDescriptor.in.valid()); //false
System.out.println("2:" + System.in.read()); //IOException
System.in.close();
}
この投稿から、ネイティブprivate static native void setIn0(InputStream in);
関数を使用してprivate static void initializeSystemClass()
、スレッドの初期化後にプライベート メソッドで最終 I/O ストリームを初期化することがわかりました。
I/O ストリームを再初期化できますか?
編集:
オブジェクトでSystem.in
あるため、次のようなもので変更することはできませんfinal
System.in=new InputStream() {
@Override
public int read() throws IOException {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
実行時に...
私が期待しているのは、ネイティブメソッド/関数を介してコンソールのハンドルを取得するソリューションです