Ifstream不会使用JNA Android Studio打开文件C ++

时间:2018-04-08 19:33:54

标签: android c++ fstream jna

我正在尝试使用fstream读取文件。我在C ++ 11中编写,但是在Android Studio中通过JNI与Jav​​a连接。由于某种原因,它不会打开文件。我使用的是相对文件路径,但我不明白为什么它无法打开文件。该文件名为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

1 个答案:

答案 0 :(得分:0)

没关系,我只是使用以下代码通过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库或类似的东西。无论如何它都有效。