Java读写小于2G的文件,可以采用内存映射文件方式。MappedByteBuffer是一种特殊类型的直接缓冲器,使用它我们必须制定映射文件的初始位置和映射区域的长度。
下面以读写1G的文件为例,简单地去应用一下直接缓冲器
// 2G以内的文件读写 // 创建读取文件通道 FileChannel rfc = new FileInputStream("E:/nio/test.dat").getChannel(); // 创建写文件通道 FileChannel wfc = new RandomAccessFile("E:/nio/my.dat", "rw").getChannel(); // 创建写文件直接缓冲器 此时写通道wfc.size()是0 此时要使用rfc.size()作为映射区域长度 MappedByteBuffer wb = wfc .map(FileChannel.MapMode.READ_WRITE, 0, rfc.size()); // 使用读取文件直接缓冲器rfc.size() 不能超过2G 没有测试 《Think in java》上写的阈值 MappedByteBuffer rb = rfc.map(FileChannel.MapMode.READ_ONLY, 0, rfc.size()); while (rb.hasRemaining()) { wb.put(rb.get()); } rb.clear(); wb.clear(); rfc.close(); wfc.close(); System.out.println("读取完毕");
相关推荐
Java NIO 应用 -- 使用内存映射文件实现进程间通信
java NIO是 java New IO 的简称,在 jdk1.4 里提供的新 api 。...– 支持锁和内存映射文件的文件访问接口。 – 提供多路 (non-bloking) 非阻塞式的高伸缩性网络 I/O 。 本文档将围绕这几个特性进行学习和介绍。
Java NIO 源码适合初学者,里面包括通道和Buffer的基本适用,以及文件锁,和内存文件映射等等
尚硅谷_NIO_通道的数据传输与内存映射文件 ·06. 尚硅谷_NIO_分散读取与聚集写入 ·07. 尚硅谷_NIO_字符集 Charset ·08. 尚硅谷_NIO_阻塞与非阻塞 ·09. 尚硅谷_NIO_阻塞式 ·10. 尚硅谷_NIO_非阻塞式 ·11. ...
在软件系统中,由于IO的速度要比内存慢,因此,I/O读写在很多场合都会成为系统的瓶颈。提升I/O速度,对提升系统整体性能有着很大的好处。...支持锁和内存映射文件的文件访问接口;提供了基于Selector的异步网
当中还提供了一个特殊类用于内存映射文件的I/O操作。 2. Charset:它提供Unicode字符串影射到字节序列以及逆影射的操作。 3. Channels:包括socket,file和pipe三种管道,它实际上是双向交流的通道。
还定义了函数mmap来对文件进行内存映射。 此外,还有三个函数buffer-seq,buffer-nth和buffer-to-array,旨在使将java.nio类集成到Clojure中更加容易。 希望通过将它们的功能滚动到clojure.core中,它们将变得过时...
但是,Java实现采用了多线程、NIO以及内存文件映射,其速度要远远超过Python版实现。 实测结果:加密大小为1G的文件,Java版耗时为3秒左右,而Python版则需要8分钟左右,而且还可能会出现内存溢出错误。 Java版本:...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
还支持内存映射文件:我们可以将位图序列化到磁盘,然后使用 java.nio 类将它们映射到内存。 这可以避免浪费的序列化/反序列化例程。 该库还提供了标准 BitSet 类的替代品。 与 JavaEWAH 中的其他位图类一样,这...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...