就像标题一样;是否关闭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();
}
}
...我让溪流保持开放?