我想尝试一些虚拟文件系统,比如有一个文件存储所有数据(1个文件=虚拟磁盘)。例如,我可以打开虚拟磁盘并将文件放入其中,将数据写入文件,从文件读取数据,打开文件以及使用fseek等。
我可以使用任何库吗?许可证等等并不重要。我只是想在我的机器上进行测试,因为我很自负,所以我想在C ++ / C中尝试一下。
提前致谢! :)
如果库只是windows,那么它也没关系,也许我会找到一个linux库,这样我可以制作2个项目?
编辑: 感谢BRPocock我知道我的问题有点不清楚。我真正想要的是一个能够在库已经提供的VFS上存储文件,读取文件和执行文件操作的库。当然是安装。所以,如果有一个库在C ++中给我这个函数,我会想到的是:
OpenVirtualDrive(const name[]);//
CloseVirtualDrive(handle);//
fopen(const name[], mode);//open file, return handle
fclose(handle);//close handle
ftemp(); //open file as temporary file
fremove(const name[]);//delete file
fwrite(handle, array[]);//write array to file
fread(handle, array[], size = sizeof array, pack = false);//read from file
fputchar(handle, value, utf8 = true);//put char into file
fgetchar(handle, value, utf8 = true);//read char from file, move pointer
fblockwrite(handle, const buffer[], size = sizeof buffer);//write block
fblockread(handle, buffer[], size = sizeof buffer);//read block, move pointer
fseek(handle, position = 0, seek_whence: whence = seek_start);//move pointer
flength(handle);//size of file
fexist(const pattern[]);//check if file exists
fmatch(name[], const pattern[], index = 0, size = sizeof name);//search for file
这只是伪代码:P
答案 0 :(得分:4)
Linux(以及许多BSD,包括我相信,MacOSX)使用FUSE系统(http://fuse.sourceforge.net/)来提供这些类型的服务。你应该可以在'网络上找到很多例子。
我认为在Windows上执行相同操作的“接受”方式是将其写为设备驱动程序可加载模块(.dll
)...快速Google搜索点在http://msdn.microsoft.com/en-us/windows/hardware/gg463062作为开始 - 或许,点。
答案 1 :(得分:2)
我们SolFS将完成这项工作。评估许可证可以为您提供,我们也为非商业公共项目提供免费许可证。如果你想从其他应用程序看到文件系统,你需要SolFS的OS版本,如果你只想从你的应用程序调用它的函数,那么SolFS Application Edition就足够了。