Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关闭一个频道就足够了,还是还需要关闭RandomAccessFile_Java_Nio - Fatal编程技术网

Java 关闭一个频道就足够了,还是还需要关闭RandomAccessFile

Java 关闭一个频道就足够了,还是还需要关闭RandomAccessFile,java,nio,Java,Nio,我正在研究一些声纳Qube报告,并在适当的地方进行修复。一些同事在文件访问方面采用的一种模式是创建一个RandomAccessFile实例,并从中获取一个通道。这个通道可以返回给调用代码——然后由调用代码负责关闭它。问题是,通过返回一个通道,就不可能关闭创建它的RandomAccessFile对象——所以sonar抱怨道 是否可以关闭频道并忽略随机访问文件。我已经研究了RandomAccessFile#close()方法,可以看到它将关闭通道,但反之则不正确 另一个类似的例子是一个类,它从一个新

我正在研究一些声纳Qube报告,并在适当的地方进行修复。一些同事在文件访问方面采用的一种模式是创建一个
RandomAccessFile
实例,并从中获取一个
通道。这个通道可以返回给调用代码——然后由调用代码负责关闭它。问题是,通过返回一个通道,就不可能关闭创建它的
RandomAccessFile
对象——所以sonar抱怨道

是否可以关闭
频道
并忽略
随机访问文件
。我已经研究了
RandomAccessFile#close()
方法,可以看到它将关闭通道,但反之则不正确


另一个类似的例子是一个类,它从一个
新的RandomAccessFile(…)
创建一个通道,然后在另一个方法中关闭
通道,但没有保留对
RandomAccessFile
的引用。是否应该将代码更改为有一个指向文件的字段,并将其关闭?还是没关系?

API文档没有明确说明,这可能意味着没有保证


但是,假设
频道
文件频道
,则使用
implCloseChannel
方法关闭频道。查看实现,如果父级是
Closeable

的实例,则父级是关闭的,调用代码对通道做了什么?新的RandomAccessFile()方法是否可以处理通道并在POJO中返回信息?我认为传递通道是一种反模式,因为关闭文件也会关闭通道,但关闭通道可能不会清理文件。关闭其中一个通道会关闭另一个通道。