【发布时间】:2012-07-04 01:01:11
【问题描述】:
我正在查看“PhysicsFS”文档并寻找存档和压缩数据的方法,但找不到。这可能吗?我是否可以这样做
【问题讨论】:
我正在查看“PhysicsFS”文档并寻找存档和压缩数据的方法,但找不到。这可能吗?我是否可以这样做
【问题讨论】:
PhysicsFS 压缩支持
PhysicsFS 支持从安装在其提供的“虚拟文件系统”中任意点的 zip 文件中读取文件。这可以有效地从 ZIP 存档中解压。
但是,PhysicsFS 不支持添加或修改 ZIP 存档的内容。它只允许在其文档中称为“写入目录”的地方写入未压缩的文件。
所以,总结一下:PhysicsFS 只支持从 ZIP 档案中读取,不支持写入它。 对于您自己的压缩:如果需要,只需使用外部压缩器压缩所有写入的文件。
PhysicsFS 使用情况
有一个PhysicsFS的小教程here。
使用非常简单:
// initialize the lib
PHYSFS_init(NULL);
// "mount" a zip file in the root directory
PHYSFS_AddToSearchPath("myzip.zip", 1);
// set a directory for writing
PHYSFS_setWriteDir(const char *newDir);
// open a file for reading
PHYSFS_file* myfile = PHYSFS_openRead("myfile.txt");
// open a file for writing
PHYSFS_file* myfile = PHYSFS_openWrite("output_file.bin");
// get a file size
PHYSFS_sint64 file_size = PHYSFS_fileLength(myfile);
// read data from a file (decompress only if path is inside a zip mount point)
char* myBuf = new char[file_size];
int length_readed = PHYSFS_read(myfile, myBuf, 1, file_size);
// write data to a file (uncompressed)
char* myBuf = new char[new_file_size];
//...fill myBuf...
int length_writed = PHYSFS_write(myfile, myBuf, 1, new_file_size);
// close a file
PHYSFS_close(myfile);
// deinitialize the lib
PHYSFS_deinit();
【讨论】:
你的意思是“PhysFS”吗?
这是一个从 zipfile 读取文件的库。基本上就像 Quake 引擎一样。
【讨论】: