导航:首页 > 编程语言 > java关闭流的顺序

java关闭流的顺序

发布时间:2023-07-23 18:43:39

java直接return的文件流如何关闭

代码如下:

importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;

publicclassApp{

publicstaticvoidmain(String[]args)throwsIOException{

//第一种方式,稍嫌麻烦

FileOutputStreamoutputStream=null;

try{

outputStream=newFileOutputStream(newFile("data.txt"));

outputStream.write(newbyte[]{0x11,0x22,0x33,0x44});

//在这里可以直接return,会调用finally中的代码

}finally{
if(outputStream!=null){
try{
outputStream.close();
}catch(IOExceptione){
}
}
}

//第二种方式,比较简洁,不用显式调用close(),会自动调用close();

try(FileInputStreaminputStream=newFileInputStream(newFile("data.dat"))){

byte[]buf=newbyte[4];
inputStream.read(buf);

//可以在这里调用return,在这个{}代码块结束时,close会自动执行,
}
}
}

⑵ 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流操作怎样关闭流

如果 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关闭流的顺序相关的资料

热点内容
微信应用锁加密 浏览:449
数字英雄对程序员的影响 浏览:758
程序员培训学校排名 浏览:586
oppo手机如何解开微信的加密 浏览:37
学校论文答辩源码 浏览:65
rp在单片机中 浏览:177
linux软件运行命令 浏览:354
stcid加密程序 浏览:139
把解压包子放到水里 浏览:286
phpmongodb连接池 浏览:945
日本解压捏泡泡纸 浏览:121
环保参比算法 浏览:413
解压中的删掉是什么意思 浏览:766
王牌竞速什么时候能停止维修服务器 浏览:488
pdf阅读器官方 浏览:88
程序员那么爱心 浏览:304
字符a经过md5加密 浏览:420
绿色的小蝴蝶是个什么app 浏览:17
python编程输入数字输出年月日英文 浏览:631
程序员枪手 浏览:748