2013-07-16 1 views
2

Я пытаюсь прочитать текстовый файл и отобразить содержимое в QPlainTextEdit. Пожалуйста, вы можете указать, что я делаю неправильно:Чтение Qt из QTextStream

QFile jsonFile("data.json"); 

if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) 
{ 
    qDebug() << "Failed to open file"; 
    qDebug() << jsonFile.errorString(); 
    return; 
} 
else 
{ 
    qDebug() << "File opened"; 
} //It returns that the file opened successfully 

qDebug() << "File Exists?: " << jsonFile.exists(); //Yep, it exists. 

QTextStream outStream(&jsonFile); 
QString textString = outStream.readAll(); 
qDebug() << "Text string: " << textString; //textString is empty! "" 
ui->fileToPost->setPlainText(textString); //fileToPost is the QPlainTextEdit 
jsonFile.close(); 

Если я что-то вроде

QString textString = "The cat sat on the mat"; 

отображается нормально. Проблема в том, что ничего не читается из потока (или, может быть, файла).

+1

Насколько большой файл, который вы сейчас читаете? «Избегайте этой функции при работе с большими файлами, так как она будет потреблять значительный объем памяти. Вызов readLine() лучше, если вы не знаете, сколько данных доступно». http://qt-project.org/doc/qt-5.0/qtcore/qtextstream.html#readAll – otisonoza

+1

+1, я думаю, что содержимое не отображает wit 'qDebug()' в случае больших файлов. В противном случае вы проверяете 'jsonFile.exists()' после его открытия. Вы уверены, что файл data.json находится в пути? Прежде чем открыть его, вы должны сделать 'jsonFile.exists()'. – Sylvain

+0

Вы не можете открыть файл, если он не существует. Но на самом деле проверка существования излишне, или вы должны сделать это, прежде чем пытаться открыть файл. – otisonoza

ответ

1

Попытка проверить абсолютный путь файла, вероятно, это не там, где вы ожидаете: qDebug()<<QFileInfo("data.json").absoluteFilePath();