请教各路大侠:
我知道可以将文件映射到内存。但相反,有没有办法可以将内存中的二进制数据映射到一个虚拟文件?
即,将内存中的二进制数据,映射到一个虚拟文件。

解决方案 »

  1.   

    如果你要求达到"使用原本读写文件的语句读写内存文件",恐怕比较难.不过如果仅是通过二进制来读写与定位,那完全可以自己处理指针,读写相关的文件块.貌似CopyMemory就可以了.
      

  2.   

    谢谢各位的回复,我的意思大家应该是误会了。
    说白了就是我想,有没办法在内存中打开文件数据而不用写出数据到真正的文件。例如:将内存中的字符串数据映射到一个不是真实存在的虚拟文件“abc.txt”,然后用记事本打开。而不用先写数据到TXT文件再打开。
      

  3.   

    又或者,将内存中的JPG数据映射到一个不是真实存在的虚拟文件“abc.JPG”,然后用ACDSee打开。而不用事先写数据到JPG文件再打开。
      

  4.   

    如果是这样,根本就是想写文件的时候写不就完了.如果是文本,你可以定义一个字符串变量
    然后打开文件将文件数据读入变量中
    然后可以关闭文件了
    这个时候你可以任意玩弄那个变量,呵呵
    到你什么时候想写数据的时候,你再用Output方式
    打开文件向里面写数据不就可以了.如果是图片,简单的方法是把图片通过LoadPicture
    放到一个Picture类型变量中或PictureBox的
    Picture属性中:
    如:Picture1.Picture=LoadPicture("C:\11.jpg")
    也可以:Dim Pic As Picture
           Set Pic=LoadPicture("C:\11.jpg")还可以用GDI或GDI+创建设备加载图片然后你编辑完后什么时候想保存就用GDI+技术转换保存
    不就可以了吗。如果图片不编辑,基本是不用保存的。
      

  5.   

    //
    看你的意思,是想实现一种系统范围内,全局的内存文件系统?是不是想实现某些文件的查看与编辑,却又需要保证这些文件不被人复制?同时又要求不改变用户习惯(即不更改相关文件的打开方式).如果是这样,貌似不那么容易.......我能想到的一个思路,就是使用API HOOK...先查到目标文件的打开方式,然后载入那个程序,接着HOOK其ReadFile/WriteFile函数....自己实现后指向到自己的一块内存.不过.....哎,反正看起来不那么容易.....