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";
отображается нормально. Проблема в том, что ничего не читается из потока (или, может быть, файла).
Насколько большой файл, который вы сейчас читаете? «Избегайте этой функции при работе с большими файлами, так как она будет потреблять значительный объем памяти. Вызов readLine() лучше, если вы не знаете, сколько данных доступно». http://qt-project.org/doc/qt-5.0/qtcore/qtextstream.html#readAll – otisonoza
+1, я думаю, что содержимое не отображает wit 'qDebug()' в случае больших файлов. В противном случае вы проверяете 'jsonFile.exists()' после его открытия. Вы уверены, что файл data.json находится в пути? Прежде чем открыть его, вы должны сделать 'jsonFile.exists()'. – Sylvain
Вы не можете открыть файл, если он не существует. Но на самом деле проверка существования излишне, или вы должны сделать это, прежде чем пытаться открыть файл. – otisonoza