C++ 如何使用“归档和压缩数据”;Physicasfs“;

C++ 如何使用“归档和压缩数据”;Physicasfs“;,c++,archive,C++,Archive,我正在查找“PhysicsFS”文档,并搜索归档和压缩数据的方法,但找不到。是否可能,如果是我可以这样做的话,您的意思是否可能是“” 这是一个从zipfile读取文件的库。基本上就像地震引擎一样。PhysicsFS zip支持 PhysicsFS支持从安装在其提供的“虚拟文件系统”中任意点的zip文件读取文件。这有效地提供了从ZIP存档的解压缩 但是,PhysicsFS不支持添加或修改ZIP存档的内容。它只允许在文档中的“写入目录”中写入未压缩文件 总之,PhysicSF只支持从ZIP档案中读取

我正在查找“PhysicsFS”文档,并搜索归档和压缩数据的方法,但找不到。是否可能,如果是我可以这样做的话,您的意思是否可能是“”


这是一个从zipfile读取文件的库。基本上就像地震引擎一样。

PhysicsFS zip支持

PhysicsFS支持从安装在其提供的“虚拟文件系统”中任意点的zip文件读取文件。这有效地提供了从ZIP存档的解压缩

但是,PhysicsFS不支持添加或修改ZIP存档的内容。它只允许在文档中的“写入目录”中写入未压缩文件

总之,PhysicSF只支持从ZIP档案中读取,而不支持写入。 对于您自己的压缩:如果需要,只需使用外部压缩程序压缩所有编写的文件


PhysicsFS使用情况

有一个关于PhysicsFS的小教程

使用起来非常简单:

// 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只是一个例子。谢谢,但在你的例子中,我只能看到如何读取和写入数据,而不能看到如何存档或压缩。显然,从“装载为目录的zip文件”中读取文件会将其解压缩,而压缩则由你自己完成。我正在编辑我的答案。好的。那档案呢。这是我的主要目标。这个图书馆有可能吗。在PhysicsFS的虚拟文件系统中“挂载”一个zip文件,然后就可以读取该zip归档文件。但是对于编写,您可以在PhysicsFS称之为“write dir”的基础上编写,然后,独立于PhysicsFS,您可以将整个write dir归档为zip文件(例如:使用zip压缩程序)。最后,您可以使用PhysicsFS挂载这个新的zip。所以最后:PhysicsFS不支持写入zip档案,只支持从中读取。@themean我已经澄清了我的答案。