`

内存映射文件

 
阅读更多

     以前一直使用FileInputStream来读取文件,使用FileOurputStream来写文件。今天恍然大悟,RandomAccessFile类可以在初始化的时候设定是用来“读”,还是“写”,还是“又读又写”。这样一来就很方便了,打破了以前只能通过FileInputStream来读取,FileOurputStream来写入的限制。

     例如:RandomAccessFile file=new RandomAccessFile(new File("out.txt"),"rw");

    下来说说今天的重点,就是内存映射文件。想象这样一种情况:有一个文件,特别的大假设有2G。我们想读取这个超级大文件中的一些数据,或者向这个文件中写入一些东西。那么使用RandomAccessFile来载入一个2G的文件的后果是可想而知的;而且内存还可能无法载入这么大的文件。所以,使用MappedByteBuffer来映射该文件的较小部分进行操作:

int length=0x8FFFFFF;    //128MB
MappedByteBuffer out=new RandomAccessFile("test.dat","rw").getChannel().map(Filehannel.MapMode.READ_WRITE,0,length);
//操作示范:
//写入:
for(int i=0;i<length;i++){
    out.put((byte)'x');
}
print("Finish writing.");
//读取:
for(int i=length/2;i<length/2+6;i++){
printnb((char)ou.get(i));
}

 

注意:获得文件上的通道后,调用map()产生MappedByteBuffer,这是一种特殊的直接缓冲器。我们必须指定映射文件的初始位置和映射区域的长度,这意味着我们可以映射某个大文件的较小的部分。

MappedByteBtffer由ByteBuffer继承而来,因此它具有ByteBuffer的所有方法,我们同样可以使用像asCharBuffer()等这样的用法。

分享到:
评论

相关推荐

    C++中使用内存映射文件处理大文件

    内存映射文件是一种高效处理大文件的技术,尤其适用于需要处理大量数据的应用场景。在Windows操作系统中,内存映射文件利用虚拟内存机制,将磁盘上的文件直接映射到进程的地址空间,允许程序以访问内存的方式操作...

    Delph/XE如何应用共享内存映射文件(源代码)

    在Delphi XE中,内存映射文件是一种高效的数据共享机制,它允许多个进程之间共享数据,而无需通过网络或磁盘I/O进行通信。这种技术尤其适用于需要快速交互的进程间通信(IPC)。以下是对标题和描述中涉及的知识点的...

    内存映射文件(学习资料)

    ### 内存映射文件详解 #### 一、概述 内存映射文件是一种高级的数据管理技术,被广泛应用于操作系统及应用程序的设计中。本篇内容基于一份关于“内存映射文件”的学习资料,深入探讨了这一主题的核心概念及其应用...

    vc 内存映射文件.doc

    ### vc 内存映射文件知识点详解 #### 一、内存映射文件概念与应用场景 内存映射文件(Memory-Mapped File)是一种特殊的技术手段,主要用于实现文件与内存之间的高效交互。这种技术允许应用程序像访问内存一样直接...

    8.4 内存映射文件----

    内存映射文件是Windows操作系统提供的一种高效访问大文件的技术,它允许程序将文件直接映射到进程的虚拟地址空间中,使得对文件的操作就像是在操作内存一样。这种技术在处理大文件,特别是需要频繁读取的数据时,比...

    Visual C++ .NET环境下采用内存映射文件设计超大文件数据编辑器

    Visual C++ .NET 提供了一种高效的方法来解决这个问题,那就是利用内存映射文件(Memory-Mapped Files)。本文将深入探讨如何在Visual C++ .NET环境下使用内存映射文件设计一个能够处理超大文件数据的编辑器。 首先...

    利用内存映射文件技术实现进程间通信

    利用内存映射文件技术实现进程间通信,自pudn程序员联合开发网下载

    Csharp内存映射文件包含源码

    内存映射文件(Memory-Mapped File)是C#编程中一种高效的数据访问技术,它允许程序将文件直接映射到进程的虚拟地址空间,从而能够像访问内存一样访问文件内容。这种方式在处理大文件时特别有用,因为它避免了频繁的...

    VC++中使用内存映射文件处理大文件.doc

    ### VC++中使用内存映射文件处理大文件 在计算机编程领域,特别是在处理大量数据时,内存映射技术成为了一种高效的数据访问手段。本文将详细介绍如何在VC++(Visual C++)环境下利用内存映射文件(memory-mapped ...

    基于内存映射文件技术的海量影像数据快速读取方法.pdf

    ### 基于内存映射文件技术的海量影像数据快速读取方法 #### 摘要与背景 随着信息技术和传感器技术的迅速发展,遥感图像的数据量呈现几何级数的增长趋势。传统的文件读取方法(如通过文件指针读取文件)仅能正确...

    基于内存映射文件技术的海量影像数据快速读取方法

    ### 基于内存映射文件技术的海量影像数据快速读取方法 #### 摘要与背景 随着信息技术和传感器技术的迅速发展,遥感图像的数据量正在以惊人的速度增长,从早期的几兆到现今动辄数百兆乃至数十GB的规模。这种巨大的...

    用内存映射文件方法处理大文件

    内存映射文件(Memory-Mapped File)是一种在操作系统层面实现的高效文件处理技术,它允许程序将文件直接映射到进程的虚拟地址空间中,使得文件数据可以像访问内存一样被读写。这种方式大大简化了大文件处理的过程,...

    STL文件的读取(普通文件解析与内存映射文件解析) cpp&stl

    在本实例中,我们将深入探讨如何使用C++和STL库来读取STL文件,特别关注两种不同的读取方法:普通文件解析和内存映射文件解析,并比较它们的性能差异。 首先,我们来看STL文件的基本结构。每个STL文件由多个三角...

    使用内存映射文件加快文件操作速度

    ### 使用内存映射文件加快文件操作速度 在计算机科学领域,提高文件操作效率一直是系统优化的重要环节之一。本文将深入探讨如何通过使用内存映射文件(Memory-Mapped Files)来加速文件读写过程,特别是在使用VB...

    内存映射读写文件的方法

    内存映射文件(Memory-Mapped File)是一种在操作系统层面上高效读写大文件的技术,它允许应用程序将文件的内容直接映射到进程的虚拟地址空间中,使得数据的读写如同操作内存一样快速。这种方式在处理大数据量时尤其...

    大文件读写内存映射.rar

    需要注意的是,由于内存映射文件可能跨越多个页,所以部分写操作可能导致整个页被刷新到磁盘,这可能会有性能影响。 5. 关闭映射:完成操作后,使用`unmap`方法释放内存映射,然后关闭文件。这会确保所有未同步的...

    C# - 使用内存映射文件的高效文件 I/O

    在这个例子中:我们为内存映射文件定义文件路径 ( filePath) 和大小 ( )。fileSize在本例中,我们正在处理一个 100 MB 的文件。我们使用创建或打开内存映射文件MemoryMappedFile.CreateFromFile。如果该文件不存在,...

    内存映射文件实现大数据量快速存储

    内存映射文件(Memory-Mapped File)是一种在操作系统层面实现高效大数据处理的技术,它允许将文件的内容直接映射到进程的虚拟内存空间中,使得应用程序可以像操作普通内存一样读写文件,从而实现快速的数据存取。...

Global site tag (gtag.js) - Google Analytics