获取FileChannel不能直接打开,必须通过 FileInputStream、FileOutputStream 或者 RandomAccessFile 来获取 FileChannel,它们都有 getChannel 方法。
通过FileInputStream获取的channel只能读
通过FileOutputStream获取的channel只能写
通过RandomAccessFile是否能读写根据构造RandomAccessFile 时的读写模式决定。
1.读取
会从channel读取数据填充ByteBuffer,返回值表示读到了多少字节,-1 表示到达了文件的末尾。
int readBytes = channel.read(buffer);
2.写入
写入的正确代码如下:
ByteBuffer buffer = ...;
buffer.put(...)