关闭标准控制台 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.
}
}
在运行时......
我期待的是通过本机方法/函数来检索控制台的句柄的解决方案