簡體   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