Ifstream не открывает файл C++ с помощью JNA Android Studio

Я пытаюсь прочитать файл с помощью fstream. Я пишу на C++ 11, но связываю его с Java через JNI в Android Studio. По какой-то причине он не открывает файл. Я использую относительный путь к файлу и не понимаю, почему он не может открыть файл. Файл называется proverbs.txt. В названии нет никаких расхождений вроде proverbs.txt.txt или чего-то подобного.

Вот код:

void storeProverbs() {
    string path = "/Users/tenealaspencer/Desktop/proverbs.txt";

    std::ifstream provInput(path.c_str(), std::ios::in);

    //provInput.open("/Users/tenealaspencer/Desktop/proverbs.txt");

    // opens the proverbs text file
    equivInput.open("/Users/tenealaspencer/AndroidStudioProjects/example/app/src/main/cpp/stored.txt"); // opens the stored (English) proverbs text file

    if (!provInput.is_open()) {
        cout << "error ";
    }

    while (!provInput.eof()) // while not at the end of the proverbs file

    {
        getline(provInput, phrase); // read proverbs in line by line
        getline(equivInput, storedProv); // read english proverbs in line by line

Получили ли вы какую-нибудь ошибку? Если да, пожалуйста, включите это в свой пост.

Onur A. 09.04.2018 14:19

Нет, я не получал сообщения об ошибке или чего-то подобного.

Teneala Spencer 09.04.2018 17:39

Можете ли вы проверить, существует ли файл в указанном месте? Обычно программа принимает папку bin в качестве текущего местоположения

Onur A. 09.04.2018 18:03

да, я тоже это сделал. Я открыл проект Xcode и запустил тот же код, и он смог найти файл.

Teneala Spencer 10.04.2018 04:57
3
4
485
1

Ответы 1

Неважно, я только что импортировал файл через Java, используя следующий код:

try {
    InputStream is = getAssets().open("stopwords.txt");

    String line1;

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));


    while((line1 = reader.readLine()) != null) //
    {
        try {
            byte[] utf8Bytes = line1.getBytes("UTF8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        storeStopWords(line1);
    }
}
catch (IOException e) {
    e.printStackTrace();
}


try  {
    InputStream is = getAssets().open("proverbs.txt");
    InputStream iz = getAssets().open("stored.txt");

    String line;
    String line2; //= new String ("");

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    BufferedReader reader2 = new BufferedReader(new InputStreamReader(iz));

    while((line = reader.readLine()) != null && (line2 = reader2.readLine()) != null ) //
    {
        try {
            byte[] utf8Bytes = line.getBytes("UTF8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        storeProverbs(line,line2);
    }
}
catch (IOException e) {
    e.printStackTrace();
}

Я где-то читал, что JNA не поддерживает библиотеку fstream или что-то в этом роде. В любом случае работает.

Другие вопросы по теме