喜欢标题;关闭FileChannel
是否会关闭基础文件流?
您可以阅读AbstractInterruptibleChannel.close()
API文档:
关闭此频道。
如果频道已关闭,则此方法返回 立即。否则,它会将通道标记为已关闭,然后调用
implCloseChannel
方法,以完成关闭操作。
调用AbstractInterruptibleChannel.implCloseChannel
:
关闭此频道。
close方法调用此方法以执行 关闭频道的实际工作。只有在调用此方法时才会调用此方法 频道尚未关闭,它永远不会被调用 一次。
此方法的实现必须安排任何其他线程 在此通道返回时在I / O操作中被阻止 立即,通过抛出异常或正常返回。
这并没有说明流。事实上,当我这样做时:
public static void copyFile(File from, File to)
throws IOException, FileNotFoundException {
FileChannel sc = null;
FileChannel dc = null;
try {
to.createNewFile();
sc = new FileInputStream(from).getChannel();
dc = new FileOutputStream(to).getChannel();
long pos = 0;
long total = sc.size();
while (pos < total)
pos += dc.transferFrom(sc, pos, total - pos);
} finally {
if (sc != null)
sc.close();
if (dc != null)
dc.close();
}
}
......我把溪流打开了?
答案 0 :(得分:18)
答案是“是”,但Javadoc中没有任何内容实际上是这样说的。原因是FileChannel
本身是一个抽象类,其具体实现提供了implCloseChannel()
方法,它关闭了底层FD。但是,由于该体系结构以及implCloseChannel()
受到保护的事实,因此无法记录。