在Java中使用StreamWriter.close()

sma*_*llB 0 java streamwriter

是否有任何理由在StreamWriter类上调用close方法?我为什么要这样做?如果我不关闭StreamWriter,我会得到某种未定义的行为吗?

JB *_*zet 8

假设您正在讨论java.io.OutputStreamWriter,是的,当您不想再编写任何内容时,应该在finally块中关闭它.这允许关闭底层的OutputStream.如果底层OutputStream是FileOutputStream,它将释放文件描述符(这是一个有限的OS资源),并允许其他aps读取该文件.如果它是一个SocketOutputSTream,它将向另一方发出信号,它不应该从套接字输入流中得到任何更多信息.

通常,必须始终正确关闭流和读取器/写入器.如果使用Java 7,请使用新的try-with-resources构造,以确保它自动完成.