导航:首页 > 编程语言 > javaio流关闭

javaio流关闭

发布时间:2022-05-18 21:45:20

java socket中关闭IO流后,发生什么事

为了方便讲解,我们把DataOutputstream dout = new DataOutputStream(new BufferedOutputStream(mySocket.getOutputStream()));中的dout做为Socket输出流的代言。同 样的,din是输入流的代言。
可以造成dout被关闭的操作有:
1、调用dout.close();或din.close();因为使用这种流关闭,会造成socket被关闭,所以输入输出流都将不可再用。
2、调用socket.close();
3、调用socket.shutdownOutputStream();单方面关闭dout,此时din还可正常使用。

以下,我将对socket中关闭输出流进行3个测试:
输出流关闭测试一:socket关闭吗?
输出流关闭测试二:该流是否可以重新开启?
输出流关闭测试三:输出缓冲区里的数据是丢弃,还是发送?
测试结果如下:
测试一:dout.close();会造成socket被关闭,但socket.shutdownOutputStream()不会。
测试二:不可以,会抛出异常!
测试三:丢弃

转载

② java io流的关闭问题。

你BufferedReader是通过fileReader来的,相当于你关闭br后就直接关闭了FileReader,最后建议你把br=null;

和这个相反你可以参考一下rs和con的关系

③ java中IO流操作怎样关闭流

如果 in == null,就说明 in这个引用所指向的对象还没有被创建,自然 in.close()也就不可能被执行,而且会报异常。我是这样想的,程序中 如果你先声明变量
InputStream(或者其他流类型) in = null;
然后执行其他语句,再 in = new 、、、、
在in new之前其他语句出exception,这时流没有被打开,也就无需关闭,如果不判断if(null != in) 硬要关闭in就出exception

另外你的代码按如下写会更合理:

if(null != in){
try{
in.flush();
in.close();
in = null;
}
catch(IOExection e){};
}

④ Java IO流中先关闭输出流还是先关闭输入流为什么

java中需要手动释放的资源常见的有以下两个:

  1. 流相关资源

    流相关资源一般遵循:

    1)先开后关,先开的输入流,再开的输出流,通过读取输入流写入输出流中,那么应该先关输出流,再关输入流,但是一般关闭输入输出流操作都是在读写完成后的finally中执行的,所以即使先关输入流,再关输出流也不会任何问题,因为读写操作没有进行了。

    2)先关外层,再关内层。如BufferedInputStream包装了一个FileInputStream,那么先

    关BufferedInputStream,再关FileInputStream。但要注意的是由于一般处理流持有节点流引用,处理流都会在自己的close方法中去关闭节点流,因此我们只要关闭外层的处理流即可,如果多此一举的关闭节点流反而会报错。如BufferedInputStream包装了FileInputStream,我们只要关闭BufferedInputStream即可

    3)只关处理流,不关节点流,原因见上述第二条

    流相关文章参考:http://blog.csdn.net/u012250875/article/details/78341874

  2. jdbc相关资源

    Connection,PrepareStatement,ResultSet三个资源。这三个资源的获取顺序是:

    先获得一个jdbc连接对象Connection,再通过连接对象获得一个sql预处理对象PrepareStatement,如果是查询的话最后还会通过PrepareStatement对象获取一个结果集ResultSet对象,关闭顺序与获取顺序正好相反。先关ResultSet,再关PrepareStatement,最后关Connection。

⑤ 大佬们,关于java IO流关闭的一点疑问,求大佬们帮帮忙

如果上面没有对流进行手动关闭的话,finally方法中的fis一定不为空

⑥ java关闭IO流的时候Socket也同时关闭

楼主解决了么,我想到一个办法:
服务端:就是每次接收到一个客户端请求以后,都重新启动一个线程用于逻辑处理,处理完毕后关闭该线程会自动关闭。
客户端:每次发送/接收数据都新建一个socket ,发送完/传输完就关闭当前socket

⑦ java中IO流关闭时的疑惑

importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;

/*
*加入异常处理的字节输出流操作
*/
{
publicstaticvoidmain(String[]args){
//分开做异常处理
//FileOutputStreamfos=null;
//try{
//fos=newFileOutputStream("fos4.txt");
//}catch(FileNotFoundExceptione){
//e.printStackTrace();
//}
//
//try{
//fos.write("java".getBytes());
//}catch(IOExceptione){
//e.printStackTrace();
//}
//
//try{
//fos.close();
//}catch(IOExceptione){
//e.printStackTrace();
//}

//一起做异常处理
//try{
//FileOutputStreamfos=newFileOutputStream("fos4.txt");
//fos.write("java".getBytes());
//fos.close();
//}catch(FileNotFoundExceptione){
//e.printStackTrace();
//}catch(IOExceptione){
//e.printStackTrace();
//}

//改进版
//为了在finally里面能够看到该对象就必须定义到外面,为了访问不出问题,还必须给初始化值
FileOutputStreamfos=null;
try{
//fos=newFileOutputStream("z:\fos4.txt");
fos=newFileOutputStream("fos4.txt");
fos.write("java".getBytes());
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
//如果fos不是null,才需要close()
if(fos!=null){
//为了保证close()一定会执行,就放到这里了
try{
fos.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}
}

⑧ Java中怎么判断一个io流是否已经关闭

try{
inputstream.read();
Syste.out.println("流未关闭");
}cache(Exceptione){
Syste.out.println("流已关闭");
}

⑨ Java中的io流关闭问题

如下例子代码:
FileInputStream is = new FileInputStream(".");
BufferedInputStream bis = new BufferedInputStream(is);
bis.close();

从设计模式上看:
java.io.BufferedInputStream是java.io.InputStream的装饰类。
BufferedInputStream装饰一个 InputStream 使之具有缓冲功能,is要关闭只需要调用最终被装饰出的对象的 close()方法即可,因为它最终会调用真正数据源对象的 close()方法。

BufferedInputStream的close方法中对InputStream进行了关闭,下面是jdk中附带的源代码:
java.io.BufferedInputStream的api:
close
public void close()throws IOException 关闭此输入流并释放与该流关联的所有系统资源。

因此,可以只调用外层流的close方法关闭其装饰的内层流,验证例子:

public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("d:\\a.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
bw.write("java IO close test");

bw.close();

}

验证ok

阅读全文

与javaio流关闭相关的资料

热点内容
多个文件解压缩 浏览:538
python字符串替换函数 浏览:825
app会员卡怎么做 浏览:921
我爱你python编码 浏览:365
一台计算机作为服务器一般可以运行什么软件 浏览:421
应用加密桌面还显示头像咋办 浏览:523
微软硬盘加密密钥 浏览:156
空调压缩机和风扇 浏览:511
代码可以编译运行 浏览:918
银行卡加密码大全真号 浏览:447
单片机测esr 浏览:412
app怎么设置消息功能 浏览:916
明词pdf 浏览:427
云域控服务器有什么用 浏览:577
字节和B站程序员 浏览:747
app推荐书要怎么做 浏览:303
unix网络编程第一卷 浏览:852
c需要pdf 浏览:865
超级解压的美甲 浏览:72
安卓手机如何永久取消静音 浏览:722