2 u010749588 u010749588 于 2016.02.15 15:29 提问

C/C++ 大文件读写 文件内存映射 分页读写

小文件读写时,read write fread fwrite都可以实现,如果文件很大,耗时就特别长。
内存映射和分页读写可以解决这个问题,小弟对于读操作没疑问,对于写就有一个难题:
举例:
一个文件分成n页,我获取了第2页的内容,如果我要对第二页的内容插入或者删除部分字符,这就影响了该页的实际长度,为了保证文件的连续性,必须对第一页和第二页,以及第二页和第三页分别进行衔接,这应该如何处理?
还是大神们还有别的方法?

1个回答

devmiao
devmiao   Ds   Rxr 2016.02.16 08:54
u010749588
u010749588 你好,这个内存映射的方法并没有说明增添字符的操作,例如有一个1G的文件,文件前十个字符是0123456789,我想把其中的1234替换为4321abc,应该怎么操作
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C\C++对大文件的快速读写(内存映射)
1、 创建文件(CreateFile),如下: HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWO
用C语言读取大文件的问题 内存映射
Windows对文件的读写提供了很丰富的操作手段,如: 1. FILE *fp, fstearm...; (C/C++) 2. CFile, CStdioFile...; (MFC) 3. CreateFile, ReadFile...;(API) ... 在处理一般的文件(文本/非文本),这些足够了。然而在处理比较大的文件如 几十M, 几百M, 甚至上G的文件, 这时再用一般手段
关于内存映射文件技术处理大文件的读写
Windows对文件的读写提供了很丰富的操作手段,如:1. FILE *fp, fstearm...; (C/C++)2. CFile, CStdioFile...; (MFC)3. CreateFile, ReadFile...;(API)...在处理一般的文件(文本/非文本),这些足够了。然而在处理比较大的文件如几十M, 几百M, 甚至上G的文件, 这时再用一般手段处理,系统就显的力不从心
C++采用内存映射方式高效率读写大数据
在有时候,项目的数据量特别大,而且源源不断的到来,这个时候,利用传统的IO文件流写文件势必效率很低跟不上节奏。不妨采用内存映射方式来写文件,达到高效。 我们这里采用mmap这种内存映射方法: 一、mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这
[转][VC/MFC]关于内存映射文件技术处理大文件的读写
Windows对文件的读写提供了很丰富的操作手段,如:1. FILE *fp, fstearm...; (C/C++)2. CFile, CStdioFile...; (MFC)3. CreateFile, ReadFile...;(API)...在处理一般的文件(文本/非文本),这些足够了。然而在处理比较大的文件如几十M, 几百M, 甚至上G的文件, 这时再用一般手段处理,系统就显的力不从心
关于文件读写--Linux的内存映射解决大文件读写
第一组:ifstream与CFile的效率 From:http://www.cppblog.com/zhangyq/archive/2009/05/19/56034.html ifstream是标准C++中的文件输入流,在实际应用中,用它的read方法,是必须缓冲的,效率很低。 在一次测试中,用它将一个800k的文件一次读入字符串中,和MFC中的CFile类的read方法,效率竟然相
文件内存映射mmap解决大文件快速读写问题和进程间共享内存
mmap函数主要用途有三个: 1、将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能; 2、将特殊文件进行匿名内存映射,可以为关联进程提供共享内存空间; 3、为无关联的进程提供共享内存空间,一般也是将一个普通文件映射到内存中。 Linux提供了内存映射函数mmap, 它把文件内容映射到一段内存上(准确说
c++ 利用内存映射读取大文件
由于用到的txt存放的数据有几十万行,用getline来读取文件非常慢,搜索了一下可以来优化读取文件的方法。 据说用内存映射读取文件速度快,试了一下,但是发现要分行处理数据时,速度还是挺慢的。 有关内存映射的介绍,参考别人博客。 http://blog.csdn.net/wcyoot/article/details/7363393 /////////////////////////////
c语言实现mmap内存映射读取文件和文件加密
#define _CRT_SECURE_NO_WARNINGS 1 #include #include #include #include #include #define LOGD printf #if _WIN32 #include #include #include #define stat _stat #else #include #include #i
Java NIO内存映射---上G大文件处理
本文主要讲了java中内存映射的原理及过程,与传统IO进行了对比,最后,用实例说明了结果。