Java NIO之FileChannel学习
来源:互联网 发布:淘宝网品牌特卖会 编辑:程序博客网 时间:2024/06/04 22:58
1.FileChannel是一个关于读,写,映射或者操作一个文件的通道
2.一个FileChannel是一个SeekableChannel,它和一个文件连接。在它的文件里有有一个当前位置(position),这个位置可以查询,也可以修改。这个文件它本身包含一个可变长度的字节序列可以用来读或者写,它当前的size也可以查询。文件的大小会随着写入的byte数量超过它本上的大小时而增加,文件的大小会减小当它被缩减的时候(truncated)。这个文件可能也有一些元数据,例如访问权限,文件类型和最后一次修改时间。FileChannel这个类中没有定义关于元数据的方法。
3.除了熟悉的关于字节的读,写,关闭操作外,这个类定义了以下关于文件具体的操作。
1)字节可以在在一个文件的一个绝对的位置读或者写,在某种程度上不会影响通道当前的位置(read/write)
2)文件的一个区域可以直接映射在内存中,对于一个大文件这是一个十分高效的方法相对于调用普通的read,write方法而言。(map)
3)更新使一个文件强制输出到底层的存储设备,确保数据在系统的缓存中没有丢失。(force)
4)字节可以从一个文件转移到其他通道,反之亦然。在某种程度上,可以被最佳化的通过许多操作系统里一个非常快的直接转移到或者从文件系统的缓存中。(transferTo)
5)一个文件的部分可以阻止其他程序的访问。(FileLock)
4.FileChannel在大量并非的线程中是线程安全的,它的close方法可能在任何时候被调用和Channel接口中声明的一样。在指定的时间内,只有一个操作可以调用channel的position方法或者在程序内改变文件的大小。当第一个操作仍在程序中执行时尝试去初始化第二个这样的操作会一直被阻塞直到第一个程序执行完毕。其他的操作,在特殊情况下,它们拿到一个明确的位置,可能会同时进行,实际上它们是否那样做取决于底层的实现,因此未指定。
4.一个文件的视图由FileChannel的一个实例提供和同一个文件的其他视图通过其他实例提供在同一个程序中保证了一致性。一个视图可能或者不可能通过FileChannel的一个实例提供,然而,与其他并发运行的程序看到的视图一致由于底层的操作系统执行缓存和网络文件系统协议产生的延迟。不管这些程序是用什么语言编写的,它们是在同一台机器上运行还是在其他机器上运行,这都是真的。这种不一致的确切性质是系统依赖的,因此是未指定的。
5.FileChannel的创建方式
FileChannel.open();
FileInputStream.getChannel(); 读
FileOutputStream.getChannel(); 写
RandomAccessFile.getChannel(); 指定读写模式(MapMode,r读,rw可以读也可以写)
- Java NIO之FileChannel学习
- JAVA NIO之FileChannel
- Java nio 之 FileChannel
- java nio 之FileChannel
- java NIO 之fileChannel
- Java NIO 学习(三)--FileChannel
- Java的NIO之FileChannel
- Java NIO 学习 ByteBuffer,FileChannel,Socket
- Java - NIO之Channel(FileChannel)
- 8.Java NIO系列教程之FileChannel
- NIO之FileChannel
- Java NIO FileChannel
- Java NIO(8-FileChannel)
- Java NIO FileChannel
- Java NIO FileChannel
- java nio(二)FileChannel
- Java NIO -- FileChannel
- Java NIO (七) FileChannel
- 如何在linux创建ftp服务器
- Debain-tomat8
- mysql语句大全
- H.265 对直播和点播平台的意义
- 云白条,做有温度的金融,帮助有困难的人
- Java NIO之FileChannel学习
- [JAVA学习笔记-88]DelayQueue实现Leader-Follower pattern
- OpenJudge 2.5-1756 八皇后【回溯算法】
- codeforces 814 C An impassioned circulation of affection
- 添加ubuntu升级库
- 学习php
- 实战json、html、jsx的互转
- 关于连续点击的处理、避免多次点击
- 语义分割--Attention to Scale: Scale-aware Semantic Image Segmentation