[gelöst] Dateien werden nicht gelöscht

Alles rund um die Programmierung mit Qt
Antworten
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

[gelöst] Dateien werden nicht gelöscht

Beitrag 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.
Zuletzt geändert von dhcase am 2. Dezember 2006 01:23, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn die Datei offen ist kann man sie nicht löschen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag 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.
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag 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.
Antworten