Я пытаюсь прочитать файл с помощью 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
Нет, я не получал сообщения об ошибке или чего-то подобного.
Можете ли вы проверить, существует ли файл в указанном месте? Обычно программа принимает папку bin в качестве текущего местоположения
да, я тоже это сделал. Я открыл проект Xcode и запустил тот же код, и он смог найти файл.
Неважно, я только что импортировал файл через 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 или что-то в этом роде. В любом случае работает.
Получили ли вы какую-нибудь ошибку? Если да, пожалуйста, включите это в свой пост.