1: IO流在虚拟机关闭后,流会自动关闭吗?
2: IO流在运行时关闭后,再次使用这个关闭的流是不是需要重新构造?
3: IO流不关闭可能会导致文件打不开,是指虚拟机退出后操作系统打不开,还是程序中其它的流打不开?

解决方案 »

  1.   

    1: IO流在虚拟机关闭后,流会自动关闭吗?
    自然
    2: IO流在运行时关闭后,再次使用这个关闭的流是不是需要重新构造?
    可以这么说
    3: IO流不关闭可能会导致文件打不开,是指虚拟机退出后操作系统打不开,还是程序中其它的流打不开?
    虚拟机退出了就没关系了 应该是有可能虚拟机没有退出的时候操作系统打不开
      

  2.   


    xp 系统是其中的吗?
    是不是指当我用输入流对象读取 a.txt 文件时候,这个输入流对象没有关
    然后用输出流对象将数据写入 a.txt 文件会打不开呢?
    如果我把输入流关闭后要再用输入流读取是不是要重新构造对象呢,这样不是很麻烦?
      

  3.   


    我刚才试了下对同一个文件构造两个写对象,好像可以同时写.不知道是不是我理解错了
    File f = new File("D:"+File.separator+"123.txt");
    OutputStream os1 = new FileOutputStream(f,true);  //输出流对象--> f
    BufferedWriter os2 = 
    new BufferedWriter (
    new OutputStreamWriter( 
    new FileOutputStream(f,true)));//缓冲区写对象--> f

    os1.write(1);  os2.write(2);
    os1.flush();   os2.flush();

    FileInputStream fis = new FileInputStream(f);  //输入流对象-->f
    System.out.println(fis.read());
    System.out.println(fis.read());
    指点一下
      

  4.   


    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;public class Test { public static void main(String[] args) throws Exception { File f = new File("123.txt");
    OutputStream os1 = new FileOutputStream(f, true); 

    new Thread() {
    public void run() {
    BufferedWriter os2;
    try {
    os2 = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(new File("123.txt"), true)));
    os2.write(456);
    os2.flush();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }

    }
    }.start();

    Thread.sleep(10000);
    os1.write(123);
    os1.flush();
    }}
    暂时试验结果,不受两输出流同时打开限制
    但是某输出流打开文件期间该文件无法删除
    进一步研究下吧
      

  5.   

    1 会
    2 是
    3 看操作系统和要打开该文件的软件,比如你在windows下用java编一个文本文件。然后用wordpad就打不开,但是用notepad就可以