gpt4 book ai didi

android - cocos2d-x & android 从assets文件夹加载文件

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:39 25 4
gpt4 key购买 nike

我在 assets/plist/文件夹中有一堆 plist 文件,我正在尝试加载这些文件以验证它们的哈希值。

发生的事情是下面的代码对我来说失败了

const char *fullPath = cocos2d::CCFileUtils::sharedFileUtils()->fullPathForFilename(name).c_str();
std::ifstream ifs(fullPath, std::ios::binary);
std::vector<char> str((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());

返回的字符数组始终为空。

尝试使用 fopen 打开同一个文件也会导致文件句柄出现空指针。

我已验证完整路径是 assets/plists/file.plist 并且 file.plist 存在于 assets/plist 文件夹。

我在这里做错了什么?

最佳答案

感谢 borrrden 的引用。你提到的那个问题并没有完全回答我的问题,但让我想到了这个。

对于那些偶然发现这个问题的人来说,assets 文件夹被压缩在 APK 中,与 iOS 不同的是,它无法直接从那里读取文件。为了获得适用于 iOS 和 Android 以及 Assets 和其他文件夹的一致解决方案,下面的代码使用 cocos2d-x 框架中的 CCFileUtils 来读取文件。

unsigned long pSize = 0;
unsigned char* str = CCFileUtils::sharedFileUtils()->getFileData(name, "rb", &pSize);
std::string hash = GCGameUtils::sharedInstance()->hmacForKeyAndData(str, name, pSize);
delete[] str;

cocos2d-x fileutils 已经有了这个很酷的函数来获取文件数据!

关于android - cocos2d-x & android 从assets文件夹加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22982107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com