都说读读文件之后要调用close()方法,否则输入流一直开着就会占用内存,但是在eclipse中运行程序之后,输入流难道没有自动关闭吗?运行程序之后,红色的小按钮自动变成暗红色了,这不是关闭的意思吗?再问个问题,运行完程序之后虚拟机有没有关闭?
public class FileInputStreamTest 
{
public static void main(String[] args)throws Exception
{
InputStream is=new FileInputStream("weiwei.txt");
byte[] b=new byte[200];
int length=0;
while(-1!=(length=is.read(b,0,100)))
{
String str=new String(b,0,length);
System.out.println(str);
}
//is.close();
}    
}

解决方案 »

  1.   

    程序运行完了之后,没有关闭的流会随着 java 进程的消亡,操作系统会回收该进程所占用的一切资源。但是在很多场景中,并不是那么简简单单的一个 main 程序,绝大多数是一直运行下去的服务端应用,这样的话,不关闭流会带来很多意想不到的问题! 另外,流必须得关闭,而且必须在 finally 块中关闭!