简体   繁体   中英

Ifstream won't open file C++ with JNA Android Studio

I am trying to read in a file using the fstream . I am writing in C++11, but interfacing it with Java via JNI in Android Studio. It doesn't open the file for some reason. I am using a relative file path and I don't understand why it can't open the file. The file is named proverbs.txt . There aren't any discrepancies within the name like proverbs.txt.txt or anything like that.

Here's the code:

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

Never mind I just imported the file via Java using the following code:

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

I read somewhere that JNA doesn't support the fstream library or something like that. In any case it works.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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