2008-12-16 101 views
1

我想创建一个只驻留在内存中的文件...在查看一些文档时,我看到了一个建议,使用外壳扩展作为虚拟文件。林不知道这是一个可行的解决方案,但我想知道外壳扩展 - 虚拟文件创建

  1. 它是一个不错的方法(或者我应该使用RAMDISK代替)
  2. 哪里是开始读了它的好地方

注意:这是Windows平台

回答

0

据我所知,你希望你的程序创建一个“文件”,它只驻留在内存中,并且你可以传递给另一个外部程序(比如说Microsoft Word)。

AFAIK这是不可能的,缺乏ramdrive。我建议使用临时文件夹。然而,你将不得不想出一个删除文件的策略,当它不再需要时。

加了:虽然第二,你可能想看看Reparse points。我自己并不熟悉它们,它们只能用于NTFS格式化的磁盘,但也许它们可以为您提供所需的内容。这将是很多编码,但。

0

你不说上。平台你但我猜的Windows上。 mmap()是否可用?如果没有,我认为BerkeleyDB已经移植到Windows,所以你应该能够使用它。 Win32 API可能类似于mmap(),但我不知道它。

+0

除非我弄错了,mmap文件不会将其加载到内存中,它只会为您提供一个虚拟内存指针,您可以从中访问该文件。它只会在你读取它时才进入内存(如果操作系统需要内存,则进入交换) – mat 2008-12-16 22:05:55

+0

你对mmap(3)是正确的,但这对OP来说可能足够了。无论如何,BDB也应该工作。 – Keltia 2008-12-16 22:13:41

0

如果您想要一个只驻留在内存中的文件,请使用命名管道或其他东西,尽管我质疑您的场景 - 您是否可以升级并描述您想要执行的操作?