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

解决方案 »

  1.   

    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就不一样了
      

  2.   

    应该是半关闭的原因,close()相当于在后面加了一个文件结束符,依旧可以读
    一般关闭网络流的时候是半关闭