ifstream in Kombination
-
hallo ich hätte mal eine Frage bezüglich "ifstream" in Kombi mit anderen Funktionen
Beispiel copy,remove:
#include <windows.h>
#include <stdio.h>int main()
{CopyFile("D:\\ZickZack.txt","D:\\bilder\\SCRIPT3000.txt",0);
remove("D:\\ZickZack.txt");system("PAUSE");
return 0;
}funktioniert ohne Probleme.
wenn ich jedoch einen ifstream mit einbaue wird nur die Datei kopiert und nicht mehr gelöscht.
Beispiel ifstream, copy,remove:
#include <fstream>
#include <windows.h>
#include <stdio.h>int main()
{
ifstream file("D:\\ZickZack.txt");CopyFile("D:\\ZickZack.txt","D:\\bilder\\SCRIPT3000.txt",0);
remove("D:\\ZickZack.txt");system("PAUSE");
return 0;
}kann mir jemand den Grund dafür nennen?
Wahrscheinlich wird die Datei durch den ifstream blockiert?
Danke für die Antworten Jungs und Mädels
-
Deine Vermutung ist korrekt.
Unter Linux würde das ganze funktionieren
-
LordJaxom schrieb:
Unter Linux würde das ganze funktionieren

echt? dateien werden beim lesen nicht gelockt? das heisst du kannst ne offene datei löschen, und was passiert dann beim lesen?
@TE: geh mal bei dir start->ausführen-> "%TMP%", markier mal alle dateien und lösch sie, ein paar weden nicht gelöscht werden können ;), gleiches problem (vor allem wenn du winamp dabei anhast)
-
Skym0sh0 schrieb:
LordJaxom schrieb:
Unter Linux würde das ganze funktionieren

echt? dateien werden beim lesen nicht gelockt? das heisst du kannst ne offene datei löschen, und was passiert dann beim lesen?
Die Daten der Datei werden zwischengespeichert. Sind im Prinzip bloß unbenannte Pipes ohne Sender. Du kannst sogar noch in eine gelöschte Datei schreiben, wenn du sie vorher geöffnet hattest. (afaik)
-
pyhax schrieb:
Die Daten der Datei werden zwischengespeichert. Sind im Prinzip bloß unbenannte Pipes ohne Sender. Du kannst sogar noch in eine gelöschte Datei schreiben, wenn du sie vorher geöffnet hattest. (afaik)
Grob gesagt stimmt das, tatsächlich wird aber nichts zwischengespeichert. Beim Löschen wird nur der Dateiname (also der Link in den Verzeichnisbaum) gelöscht. Solange die Datei offen ist, bleibt sie auf der Festplatte, ist nur nicht mehr erreichbar für andere. Sobald der letzte die Datei geschlossen hat, werden auch die Daten zum Überschreiben freigegeben. Quasi ein Smartpointer für Dateisysteme
