Datei kopieren
-
Hi, ich bin mir zwar sicher das schon irgendwo hier im Forum gesehen zu haben aber ich habs nicht mehr gefunden:
Ich will einfach von einer Datei eine Sicherheitskopier erstellen.
So hab ichs versucht:CFile* secFile = file.Duplicate(); CString eins = file.GetFilePath(); CString zwei = file.GetFilePath() + ".bak"; secFile->Rename(eins, zwei);
Wenn ich auf den Button Klick kommt folgende Fehlermeldung:
"Eine Zugriffsverletzung ist während des Zugriffs auf eine unbenannte Datei afgetreten."
-
file.Duplicate()
Das erzeugt nur ein neues CFile-Objket, welches ein Handle auf ein und diesselbe Datei hat. Es wird also nix kopiert
-
Achso dann hab ich das falsch verstanden
-
Muss ich jetzt die andere Datei mit Open(...) erstellen und die Bytes einzeln aus der alten in die neue Datei kopieren oder gibt es da ne elegantere Lösung?
-
Vielleicht mit CopyFile(...) ?
-
Hm da kannst du nur nach einer WinAPI-Funktione suchen. Ich könnte mir vorstellen das es eine gibt, aber wie die heißt ...
-
CopyFile() hört sich gut an, aber es macht nichts ^^
CopyFile(file.GetFilePath(),file.GetFilePath() + ".bak",false);
Das gibt mir ne 0 zurück - also nicht kopiert. File ist exklusiv geöffnet, hat es etwas damit zu tun?
-
naja ich habs jetzt einfach so gelöst:
CFile secFile; secFile.Open(file.GetFilePath() + ".bak", CFile::modeCreate | CFile::modeReadWrite |CFile::shareExclusive); file.SeekToBegin(); UINT length = file.GetLength(); char* pBuf = new char[length]; file.ReadHuge(pBuf,length); secFile.WriteHuge(pBuf,length); secFile.Close();
auch nicht zu kompliziert
-
Also ich habe folgendes gemacht.
1. Eine Datei mit dem Namen C:/test.txt angelegt
2. folgende CodezeileCopyFile("C:/test.txt", "C:/test.bak", FALSE);
3. -> Die Datei ist kopiert!
-
Taelan schrieb:
Das gibt mir ne 0 zurück - also nicht kopiert.
Was sagt GetLastError?
File ist exklusiv geöffnet, hat es etwas damit zu tun?
Möglich.
-
jo schließ erst die Datei und versuche dann zu kopieren. Beim Kopieren ist ja ein lesender Zugriff erforderlich, und wenn du exklusive Rechte angefordert hast ...
-
k,
lag wirklich daran das ich die Datei exklusiv geöffnet hatte. Wenn ich die Datei schließ, kopier und wieder öffne gehts oder gleich etwas wie CFile::shareDenyNone nehme...Danke an Euch
-
ist das ne CFileFind GetFilePath Funktion?! Dann kann der Code mit CopyFile so irgendwie auch net gehen -.- du gibst ihm ja nochnichtmal den Dateiname, oder hab ich was übersehen?!