2013-08-10 4 views
2

Я написал простой код для открытия текстового файла с QF 5 Qt, как показано ниже;Не удается прочитать текстовый файл с Qt 5

// main.cpp 
#include <iostream> 
using std::endl; 
using std::cout; 

#include <QCoreApplication> 
#include <QFile> 
#include <QIODevice> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    QFile plainFile("plain.txt"); 

    if(plainFile.open(QIODevice::ReadOnly | QIODevice::Text)) 
    { 
     cout << "File opened successfull" << endl; 
     plainFile.close(); 
    } 
    else{ 
     cout << "could not open file." << endl; 
    } 
    return a.exec(); 
} 

Выход, когда скомпилирован и запущен, «не может открыть файл». Что я делаю неправильно?

+0

Ну, есть plain.txt в рабочем каталоге? – Bart

ответ

2

Возможно, потому что plain.txt не существует в текущем рабочем каталоге или в PATH. Убедитесь, что файл находится в рабочем каталоге или прошел абсолютный путь до QFile.

Также смотрите, что QFile::exists возвращается.

+0

plain.txt существует в том же рабочем каталоге, но, как вы предположили, передача абсолютного пути к QFile действительно работает! Благодарю. – Amani

+2

Таким образом, файл _does not_ существует в рабочем каталоге. Если вы хотите узнать, что представляет собой рабочий каталог, попробуйте следующее: 'qDebug() << QFileInfo (« plain.txt »). AbsoluteFilePath();' –

+0

Вы также можете выяснить путь (запуска) из проекта параметры в QtCreator или Visual Studio –

0

Wouter Huysentruit является правильным.

Помните, что по умолчанию при запуске приложения из рабочего каталога QtCreator есть, например, C:\Projects\build-Test-Desktop_Qt_5_1_0_MinGW_32bit-Debug. Но ваш файл .exe размещен в C:\Projects\build-Test-Desktop_Qt_5_1_0_MinGW_32bit-Debug\Debug.

Когда вы запустите свой .exe непосредственно, тогда рабочий каталог будет той папкой, где этот файл теперь лежит.

Таким образом, вы можете:

1.Pass абсолютный путь.

2.Put файл в текущий рабочий каталог (я полагаю, что это лучшее решение).

3.Just изменить относительный путь: QFile plainFile("debug/plain.txt");

Смежные вопросы