我正在尝试从我的 native 代码中读取一个简单的文本文件。
assetManager = getAssets();
然后我将 assetManager 传递给我的 native 方法和(如 native 音频示例中):AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
AAsset* asset = AAssetManager_open(mgr, "file.txt", AASSET_MODE_UNKNOWN);
AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
off_t start, length;
int fd = AAsset_openFileDescriptor(asset, &start, &length);
问题是
fd
小于0!!!任何人都可以帮忙吗?
最佳答案
AAsset_openFileDescriptor
仅适用于未压缩的文件(如 mp3、jpg、png 等)。它写在文档中(asset_manager.h 头文件):
/**
* Open a new file descriptor that can be used to read the asset data.
*
* Returns < 0 if direct fd access is not possible (for example, if the asset is
* compressed).
*/
int AAsset_openFileDescriptor(AAsset* asset, off_t* outStart, off_t* outLength);
使用
AAsset_read
或 AAsset_getBuffer
.
关于android-ndk - Android Assets 和 NDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9516305/