日期:2014-05-20  浏览次数:20806 次

close()流做了什么事
close()是为了释放流占用的资源,但自己试了下,把一个流close后还是可以read(),,那么到底close()流做了什么事??释放的又是什么东西呢??

------解决方案--------------------
你用缓冲的流试试

------解决方案--------------------
import java.io.*;
import java.util.*;
class BufferedStreamTest
{
public static void main(String[] args)
{
try{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream( "FileTest1.java "));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream( "aa.txt "));
byte[] buffer = new byte[1];
while(bis.read(buffer) != -1)
bos.write(buffer);
//bis.close();
//bos.close();
Scanner sc = new Scanner(System.in);
sc.next();

}catch(IOException e){
e.printStackTrace();
}
}
}
在你在控制台输入之前aa.txt的内容为空
如何有close就不一样了
------解决方案--------------------
应该是半关闭的原因,close()相当于在后面加了一个文件结束符,依旧可以读
一般关闭网络流的时候是半关闭