我必须解决我似乎无法解决的问题:
我有一个带有Activity的Android应用程序,它通过JNI将内部存储路径传递给C ++:
getFilesDir().getAbsolutePath() //this passed to C++ over JNI
我也尝试了类似的变体:
getDir("data", MODE_PRIVATE).toString()
但是当我到达C ++时,我有以下代码:
const char *path = (pathFromJava + "/someFileName.txt").c_str();
std::ofstream stream;
try {
stream.open(path);
if(stream.good()) {
stream << someDataToWrite;
stream.close();
}
}
catch (std::ios_base::failure& e) {
std::cout << "Error no: " << strerror(errno);
}
在上面尝试“打开”文件时,我们到达“catch”语句并打印出:“没有这样的文件或目录”。
(std :: ios_base :: failure e没有有意义的消息(ios失败就是说=(e.what()))
从Java传递的路径如下:“blablub / data / package.name / files”。 (似乎很好) 通常打开流时,通常应该在不存在时创建文件。
我还没有找到有关内部存储所需权限的任何内容。
我可能需要先用Java创建文件吗? 或者这条路可能不是正确的路径?
先感谢您提供一些提示
PS:我在IOS中再次使用同一个应用程序的C ++代码 - 所以用Java编写文件会破坏使用C ++尽可能多的代码的目的。