Я пытаюсь загрузить файл в NDK, используя ifstream, но он не может его прочитать.Я дважды проверил путь к файлу, и это не так.Эта же программа работает в обычном 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, но это не помогло.Эта проблема не зависит от формата, так как я пытался поместить разные файлы в путь.Почему не удается прочитать файл?