Seite 1 von 1

[gelöst] Dateien werden nicht gelöscht

Verfasst: 1. Dezember 2006 13:31
von dhcase
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:

Code: Alles auswählen

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.

Verfasst: 1. Dezember 2006 15:50
von Christian81
Wenn die Datei offen ist kann man sie nicht löschen...

Verfasst: 1. Dezember 2006 16:07
von dhcase
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.

Verfasst: 2. Dezember 2006 01:23
von dhcase
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.