读取数据时,position 会往后移动。位置 position 和大小 size 不需要严格与文件保持一致,position 和 size 均可以超过文件的大小范围。shared 参数指定是排他的还是共享的。由于 Java 的文件锁直接映射为操作系统的文件锁实现,因此获取文件锁时代表的是整个虚拟机,而非当前线程。与 lock() 相比,tryLock() 是非阻塞的,无论是否能够获取到锁,它都会立即返回。若 tryLock() 请求锁定的区域已经被操作系统内的其它的进程锁住了,则返回 null;而 lock() 会阻塞,直到获取到了锁、通道被关闭或者线程被中断为止。transferFrom 或者 transferTo 在调用之后并不会改变 position 的位置。

Java NIO 文件通道 FileChannel 用法及原理

Java NIO 文件通道 FileChannel 用法及原理

Java NIO 文件通道 FileChannel 用法及原理

Java NIO 文件通道 FileChannel 用法及原理

Java NIO 文件通道 FileChannel 用法及原理

Java NIO 文件通道 FileChannel 用法及原理

Java NIO 文件通道 FileChannel 用法及原理