Я наконец нашел файл пути, который QFile примет, используя QFile.exist() и здоровую дозу проб и ошибок.
Я хочу знать, почему работает следующее:
#include <QFile>
#include <QByteArray>
#include <QJsonObject>
#include <QJsonDocument>
QString path = QDir::currentPath(); // Get current dir
path.append("/noteLibrary.json");
QFile file(path); // Give QFile current dir + path to file
if (!file.exists()) { // Check to see if QFile found the file at given file_path
qDebug() << "NO FILE HERE";
}
qDebug() << path; // See what path was finally successful
file.open(QIODevice::ReadOnly); // Continue parsing document to confirm everything else is functioning normally.
QByteArray rawData = file.readAll();
// Parse document
QJsonDocument doc(QJsonDocument::fromJson(rawData));
// Get JSON object
QJsonObject json = doc.object();
// Access properties
qDebug() << json["die"].toString(); // Should output "280C4"
Успешный вывод:
"/home/pi/noteLibrary.json"
"280C4"
Но следующее НЕ работает:
#include <QFile>
#include <QByteArray>
#include <QJsonObject>
#include <QJsonDocument>
QFile file("/home/pi/noteLibrary.json"); // Give QFile current dir + path to file
if (!file.exists()) { // Check to see if QFile found the file at given file_path
qDebug() << "NO FILE HERE";
}
//qDebug() << path; // See what path was finally successful
file.open(QIODevice::ReadOnly); // Continue parsing document to confirm everything else is functioning normally.
QByteArray rawData = file.readAll();
// Parse document
QJsonDocument doc(QJsonDocument::fromJson(rawData));
// Get JSON object
QJsonObject json = doc.object();
// Access properties
qDebug() << json["die"].toString(); // Should output "280C4"
Вывод ошибки:
NO FILE HERE
QIODevice::read (QFile, "/home/pi/Desktop/noteLibrary.json"): device not open
""
Почему QFile обрабатывает их по-другому? Это проблема формата QString? Или, возможно, виноват тот факт, что я развертываю это удаленно на Raspberry Pi 3?
path
там не объявлена. Также реальный путь, который вы указываете дляQFile
, это/home/pi/Desktop/noteLibrary.json
, а не/home/pi/noteLibrary.json
. Проверьте это, пожалуйста. - person Evgeny   schedule 10.01.2017