Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用FSUSTF和IFFILE读取NDK C++文件失败_Android_C++_Android Ndk - Fatal编程技术网

Android 使用FSUSTF和IFFILE读取NDK C++文件失败

Android 使用FSUSTF和IFFILE读取NDK C++文件失败,android,c++,android-ndk,Android,C++,Android Ndk,我试图使用ifstream在NDK中加载一个文件,但它无法读取它。我仔细检查了文件的路径,没有错。当然,在没有JNI的情况下,同样的程序在普通的C++中工作 #include <jni.h> #include <string> #include <iostream> #include <istream> #include <sstream> #include <fstream> using namespace std; e

我试图使用ifstream在NDK中加载一个文件,但它无法读取它。我仔细检查了文件的路径,没有错。当然,在没有JNI的情况下,同样的程序在普通的C++中工作

#include <jni.h>
#include <string>
#include <iostream>
#include <istream>
#include <sstream>
#include <fstream> 
using namespace std;
extern "C"
{

JNIEXPORT jstring JNICALL Java_com_example_aaaaatrytest_MainActivity_stringFromJNI(JNIEnv *env, jobject /* this */) {
    string file_path = "/home/moe/Desktop/blah.txt";
    std::ifstream fim(file_path);
    if(fim.is_open())
    {
    string pass = "File Loaded";
    return env->NewStringUTF(pass.c_str());
    }
    else{
    std::string fail = "Failed to load file";
    return env->NewStringUTF(fail.c_str());
    }
}
}
我尝试使用fstream而不是ifstream,但出现了相同的错误。我还在manifest.xml中提供了外部存储写和读权限,但没有帮助。 这个问题与格式无关,因为我试图在路径中放置不同的文件。为什么它无法读取文件

我已经将文件复制到我的设备上,并给出了android路径,但仍然无法读取。我的android文件路径如下所示/storage/emulated/0/abc/abc.txt

你的应用需要读取外部存储权限


下面是一个小片段,有助于在运行时请求此权限:请参阅。

/home/moe/Desktop/blah.txt@Michael,我已将文件复制到我的设备上,并给出了android路径,但它仍然无法读取。我的android的文件路径看起来是这样的/storage/simulated/0/abc/abc.txtI还在manifest.xml中提供了外部存储写和读权限。请注意,仅在manifest中声明应用程序可能正在使用这些权限是不够的。您还必须在运行时请求权限。至少如果你的应用目标是API级别23或更高级别。@Michael,谢谢!我在运行时请求了许可,现在可以运行了!
SIGTRAP (signal SIGTRAP)
env = {JNIEnv * | 0x55bc7ccc00} 0x00000055bc7ccc00
{jobject | 0x7fcefb1af4} 0x0000007fcefb1af4