2523|4

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于内存映射文件 [复制链接]

在wince中可以把文件映射成内存,然后像访问内存一样去访问文件,处理大文件或者IO操作频繁很有优势。
但是现在,我有一套基于文件的lib,给一个文件名就可以进行相应的操作。
但是我的数据却不是文件,是从网络接收过来的放在内存里面,其实就是对应需要处理的文件数据
现在就有一个问题,我的lib是处理文件的而不是处理内存的,如何把内存映射成文件?

最新回复

如果用C解决,就需要在内存和文件上面在封装一层,这样就不具备可移植性 如果是C++的话,C++的标准就有一个Stream的概念,可以很好的解决这个问题。 看样子以后编程还是尽量的用C++了  详情 回复 发表于 2009-4-27 20:50
点赞 关注

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
还没到那水平,刚接触,帮顶一下!
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
可以試試 RAMDISK (%_WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\BLOCK\RAMDISK).

Paul, Chao @ Techware
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢Paul, Chao的回帖,查了一下关于Ram FileSystem的东东,感觉还是有所收获的。
http://realchecko.blogspot.com/2006/09/filesystem-in-windows-ce.html
看了这个帖子
RAM File System一般就會mount在root上"\",也就是說,Root就是RAM Filesystem。
RAM File system下的file會直接出現在root"\"下。
ROM File System則會mount在"\Windows"下。也就是說,CE的"\Windows" folder是read-only。

在根目录下的实际上就是Ram文件系统。
还有一个帖子是这样说的,如果你的文件IO是标准的C的话,内存的访问和文件的访问时不可移植的,但是如果是C++,就可以搞定。
因为在C++中可以把对内存的操作和文件的操作再进行一次封装。
So the data you have in memory is the content of the file, not its name.

No, there's no way to do that in standard C (other than by writing the
data to an external file and reading it back in). Some
implementations may provide this as an extension (fmemopen),
but of course any code that uses such an extension is non-portable.

A slightly more portable approach might be to copy the data to an
external file on a filesystem that's implemented in memory (if your
system provides such a thing). It's "slightly more portable" in the
sense that, if the system doesn't provide an in-memory filesystem, you
can change the file name and accept the poorer performance.


这里这个in-memory filesystem,我的理解就是Ram filesystem


I see you cross-posted this to comp.lang.c and comp.lang.c++. I'm
posting from comp.lang.c. It's possible that C++ provides a standard
way to do what you want. If anyone wants to discuss it, please post
only to comp.lang.c++; here in comp.lang.c we're a bit sensitive about
topicality.

这个问题很纠结,懒得去管它了,结贴。

 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
如果用C解决,就需要在内存和文件上面在封装一层,这样就不具备可移植性
如果是C++的话,C++的标准就有一个Stream的概念,可以很好的解决这个问题。
看样子以后编程还是尽量的用C++了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表