我需要文件访问权限以同时从不同线程读取和写入相同的 ZIP 存档。
每个线程在存档中都有自己的子目录,因此不会发生冲突,但我认为操作系统不关心这一点。
对于 ZIP 操作,我使用 libzip。我如何执行访问?我需要处理一些特别的事情吗?
我可以在应用程序启动时解压存档并在退出时压缩它,但我更愿意直接对存档进行操作,这就是我问这个问题的原因。
最佳答案
并行解包不应该那么困难,但打包文件肯定是不平凡的/
不幸的是,如果您使用的是 ZIP 格式,目录名称并不重要 - 文件存储位置的标题只是一个结构,其中包含路径和文件名作为一个整体,并且不存在不同的目录在 zip 文件中。
数据也好不到哪里去,因为每个文件的数据只是作为一个连续的数据流存储在前一个文件之后、下一个文件之前。
当然可以在准备好压缩数据的地方制作一个 zip 存档功能,一旦数据完成,分配空间并将 header 添加到目录中——这两者都处于某种锁定状态,然后数据可以在没有锁的情况下写入实际文件[尽管我不确定在不使用锁的情况下写入文件中的不同位置效果如何]。
(在维基百科here 中有很好的描述,但如果你没有研究过这些东西,可能并不完全清楚不同数据结构的后果是什么)
关于c++ - 同时访问 ZIP 文件中的不同文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18035068/