Hi,
in einem Verzeichnis werden einige Dateien (per QHttp geladen) zwischengespeichert. Diese sollen beim Beenden des Programms gelöscht werden, also wird folgende Funktion durch den Destruktor aufgerufen:
void MainWindow::clearTempDir()
{
QDir temp(tempDir);
QStringList files = temp.entryList(QDir::Files);
for (int i = 0; i < files.size(); i++)
{
QFile file(temp.absolutePath().append("/").append(files.at(i)));
file.open(QIODevice::ReadWrite);
if(!file.remove())
QMessageBox::information(0, tr("Temp"),
tr("Datei kann nicht gelöscht werden %1: %2")
.arg(file.fileName()).arg(file.errorString()));
}
temp.rmdir(temp.absolutePath());
}
file.open() gibt für jede Datei true zurück, alllerdings klappt file.remove() nicht, die Fehlermeldung: "Das Gerät erkennt den Befehl nicht". Weiss jemand woran das liegen kann, bzw. was mir die Fehlermeldung sagen soll?
Danke,
D.
Zuletzt geändert von dhcase am 2. Dezember 2006 01:23, insgesamt 1-mal geändert.
Hm, daran liegts auch nicht, ich hab zuerst das file.open() weggelassen - gleicher Fehler. Dann hab ich alle Dateien erst geöffnet und dann geschlossen (falls sie irgendwo anders nicht geschlossen wurden), aber der Fehler bleibt.
In der Doku steht
The file is closed before it is removed.
Also eigentlich solllte eine offene Datei ja vorher noch geschlossen werden.
Hat sich erledigt, ich hatte an anderer Stelle vergessen die Pointer auf die Dateien zu löschen... deshalb konnte ich sie nicht entfernen, obwohl sie schon geschlossen waren.