DBMNG数据库管理与应用

独立思考能力,对于从事科学研究或其他任何工作,都是十分必要的。
当前位置:首页 > MySQL > 常见问题

通道

20.2.2 通道

通道是由java.nio.channels包定义的。通道表示到I/O源或目标的打开的连接。通道实现了Channel接口并扩展了Closeable接口,并且从JDK 7开始还扩展了AutoCloseable接口。通过实现AutoCloseable接口,可以使用JDK 7新增的带资源的try语句管理通道。如果使用带资源的try语句,那么当通道不再需要时会自动关闭(关于带资源的try语句的讨论,请查看第13章)。

获取通道的一种方式是对支持通道的对象调用getChannel()方法。例如,以下I/O类支持getChannel()方法:

 

根据调用getChannel()方法的对象的类型返回特定类型的通道。例如,当对FileInputStream、FileOutputStream或RandomAccessFile对象调用getChannel()方法时,会返回FileChannel类型的通道。当对Socket对象调用getChannel()方法时,会返回SocketChannel类型的通道。

获取通道的另外一种方式是使用Files类定义的静态方法,该类是由JDK 7新增的。例如,使用Files类,可以通过newByteChannel()方法获取字节通道。该方法返回一个SeekableByteChannel对象,SeekableByteChannel是FileChannel实现的一个接口(在本章的后面将详细分析Files类)。

FileChannel和SocketChannel这类通道支持各种read()和write()方法,使用这些方法可以通过通道执行I/O操作。例如,表20-4中是为FileChannel定义的一些read()和write()方法。

表20-4 为FileChannel定义的read()和write()方法

 
所有通道都支持一些额外的方法,通过这些方法可以访问和控制通道。例如,FileChannel支持获取或设置当前位置的方法、在文件通道之间传递信息的方法、获取当前通道大小的方法以及锁定通道的方法,等等。从JDK 7开始,FileChannel还提供了静态的open()方法,该方法打开文件并返回指向文件的通道。这提供了获取通道的另外一种方式。FileChannel还提供了map()方法,通过该方法可以将文件映射到缓存。
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号