繁体   English   中英

无法使用fstream和ifstream在NDK C ++中读取文件

[英]Failed to read files in NDK C++ using fstream and ifstream

我正在尝试使用ifstream在NDK中加载文件,但无法读取它。 我已经仔细检查了文件的路径,这没有错。 相同的程序可以在普通的C ++中工作(当然没有JNI的东西)。

#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());
    }
}
}

除去if-else并进行调试后,调试器将显示以下内容:

SIGTRAP (signal SIGTRAP)
env = {JNIEnv * | 0x55bc7ccc00} 0x00000055bc7ccc00
{jobject | 0x7fcefb1af4} 0x0000007fcefb1af4

我试图用fstream代替ifstream但有同样的错误。 我还在manifest.xml中提供了外部存储的读写权限,但这没有帮助。 这个问题与格式无关,因为我尝试将不同的文件放在路径中。 为什么无法读取文件?

我已将文件复制到我的设备并提供了android路径,但仍无法读取。 我的android的文件路径如下所示:“ / storage / emulated / 0 / abc / abc.txt”。

您的应用需要READ_EXTERNAL_STORAGE权限。

这是一个有助于在运行时请求此权限的小片段:请参阅清单中的READ_EXTERNAL_STORAGE权限,但仍然无法使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM