2017-05-17 2 views
1

Das Problem ist also, ich versuche mit QFile in eine Datei zu schreiben, aber ich erhalte die Fehlermeldung:Linux C++ Qt, das "QIODevice :: write: ReadOnly Gerät" repariert?

QIODevice::write: ReadOnly device 

Meine Implementierung wie folgt aussieht:

void logList::insert(QString data) { 
    QString lin; 
    QFile file1("log.data"); 
    file1.open(QIODevice::WriteOnly | QIODevice::Text); 
    QTextStream out("log.data"); 
    lin = out.readLine(); 
    out << data; 
    file1.seek(30); 
    file1.close(); 
} 

ich auch mit

versucht haben,
QIODevice::ReadWrite 

für die open()

und

system("chmod 777 log.data"); 

Wie kann ich lesen und schreiben von einer Datei in Linux?

Dank

+0

Ihr Code sieht ein bisschen seltsam. Du hast eine 'QFile' mit dem Namen' file1', aber du öffnest sie nur "öffnen", "suchen" und "schließen" - du schreibst nie. –

Antwort

2
QTextStream out("log.data"); 

Der QTextStream Konstruktor, der die Datei nicht öffnen sie einen String, oder die Arbeit an einer Datei mit diesem Namen geöffnet. Statt

, sollten Sie das QFile Objekt QTextStream

QTextStream out(&file1); 

Zusätzlich passieren, wenn Sie aus der Datei lesen möchten, wird dies nicht

arbeiten
file1.open(QIODevice::WriteOnly | QIODevice::Text); 

Sie müssen die verwenden QIODevice::ReadWrite flag, anstelle von

Schließlich, wenn Sie QTextStream anstelle von QFile lesen verwenden/Schreibe Funktionen, wäre es besser, seek with the QTextStream, anstatt der QFile-Objekt

out.seek(30); 
+1

Danke. Das hat wie ein Zauber funktioniert! – smashingTheKeyboardTill