Javadoc说in
,out
和err
"已经打开",我只是想知道它们在程序完成后会关闭吗?如果不是,是否与使用后关闭任何 I/O 流引用的做法相矛盾?
stdin
、stdout
和stderr
在很大程度上是一个Unix概念,但其他操作系统(如Windows)也复制了这个概念。这些由系统维护,您通常不会关闭它们。
但是,您可以关闭它们,甚至必须在fork()
程序时关闭它们,这是让程序从命令行分离并在后台运行的 Unix 方式,例如守护程序。
System.in
/out
/err
遵循此策略。因此,您可以关闭它们,但不必这样做,因为它们是特殊的系统资源。
System.in/out/err 这些类是由 JVM 实例化的,而不是由我们实例化的。 因此,JVM将负责关闭它们。