java file 如何关闭,java – 如何正确关闭从FileOutputStream获取的FileChannel

我刚刚在当前的Eclipe Juno Release Candidate中打开了一些旧代码,并注意到一个闪亮的新警告:资源泄漏.它是由这样的代码触发的:

FileChannel out = new FileOutputStream(file).getChannel();

try

{

...Do something with out...

}

finally

{

out.close();

}

Eclipse认为创建的文件输出流是资源泄漏.实际上我不确定这是否是一个错误警告(并且FileChannel的close方法也不会关闭流)或者这是否真的是资源泄漏.我将代码更改为:

FileOutputStream outStream = new FileOutputStream(file);

try

{

FileChannel out = outStream.getChannel();

...Do something with out...

}

finally

{

outStream.close();

}

警告现在消失了,但现在我不确定是否必须调用FileChannel的close方法.所以它可能看起来像这样:

FileOutputStream outStream = new FileOutputStream(file);

try

{

FileChannel out = outStream.getChannel();

try

{

...Do something with out...

}

finally

{

out.close();

}

}

finally

{

outStream.close();

}

如果使用文件输入通道和文件输出通道,那么这将导致四个嵌套的try … finally块,并且它们都会变得臃肿.

你怎么看?是否真的有必要关闭频道和流?或者正在关闭足够的流?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值