Kopieren eines Files
-
weiss nicht ob sie geöffnet werden..
Es wird die while anweisung nicht ausgfeführt.
Da hatte ich eben eine MessageBox drin.
Die if anweisungen werden zumindest durch gearbeitet.... while(file2.ReadString(inhalt)) { file1.WriteString(inhalt); } ...
-
Hallo,
die MFC ist ja schön und gut, aber manchmal auch ein wenig umständlich.
Ich habe deinen Code nicht genauer untersucht, schlage aber vor eine
effektivere Methode zu nehmen, die heist: WINAPI::CopyFile(altesfile, nameneu, TRUE);
Wenn altesfile existiert dann wars das schon.
Gruss
EarlyBird
-
sieht ja nicht schlecht aus
aber auch hier bleibt das file leer
muss das neue File den schon existieren???
well wenn nein wäre das einfacher und schneller
-
ok ich habe es gefunden in der Msdn
aber was passiert wenn ich es FALSE setzte und das File existiert???
sieht ja einfach aus aber anscheint doch nicth zu gebrauchen weil es kann durch aus sein das beim spätern lauf der Anwendung das File schon existieren.
Obwohl
ist es möglich den kompletten inhalt aus einem Ordner zu löschen??
und wenn ja wie???
-
Hi,
nein, das neue File muss nicht existieren. Aber wenn das auch nicht funktioniert,
vermute ich mal, das der Inhalt der Varaible des alten Files nicht richtig ist.Hast Du Dir die Variable mal im Debugger angesehen? Oder es mit einer absoluten
Pfadangabe versucht?Schneller ist es auf jedenfall und funktioniert auch mit binär und text Dateien.
Wenn du TRUE setzt, passiert gar nichts, falls das File existiert. Wenn False dann
wird es gnadenlos überschrieben. Was im endeffekt passiert gibt der Rückgabewert
der Funktion zurück.Gruss
EarlyBird
-
Du kannst mit FindFirstFile durch das Directory browsen und dann mit DeleteFile
die Files löschen.
-
siehe beitrag zuvor
ich schaue mir dann mal das mit dem debuggen an
aber das file wird ncith erstellt damit, egal ob ich zum schluss true oder false sage.
Es sieht so aus als würde über alles was mit schreiben in das neue file zu tun hat, einfach ignoriert werden....
-
ich kenne aber nciht die namen der files die gelöscht werden sollen
-
hallo,
die Optionsfelder gehne zwar immer noch ncith so richtig aber ich habe andere fehler im code gefunden...
Jetzt habe ich mal ne andere frage
und zwar wenn ich ein file habe, dessen Pfad etwa so aussieht'..\\abc\\x y z.txt'
(beachte die leerzeichen )
würde das gleiche file geöffnet werden wen die Leerzeichen nicht wären
'..\\abc\\xyz.txt'
oder geht das nciht
Weil ich habe ein Problem mit den Namen beim auslesen..
ich ändere ja den Pfad im Program, von altesfile in nameneu
int nTmp = inhalt.ReverseFind('\\'); //suche nach \\ hinten beginnent inhalt.Delete(nTmp-inhalt.GetLength(),nTmp); //schneite vor \\ alles ab DWORD l =inhalt.GetLength(); inhalt.Delete(1-l);// \ vor filename entfernen int a = inhalt.ReverseFind('.'); // von hinten den Punktfinden inhalt.Delete(inhalt.GetLength()-a, a); MessageBox("hier pfad ohne endung", inhalt); // neuer Pfad der kopie des Orginal Txt nameneu.Format("%s%s%s", kochentxt,inhalt,txt); MessageBox(nameneu,"gefüllt mit nameneu");
Und hierbei kann es ja ein file geben das im Namen leerzeichen enthält.
oder wäre es bessere wenni ch einfach davon ausgehe das es keine files mit leerzeichen gibt.Der Code stimmt aber sowet oder.
-
vergesst den letzten post der bringt es eh nicht
und habe ihn deshalb aus dem code verbannt.
Nur nochmal leerzeichen in Pfadnamen sind doch egal bei meiner artder verarbeitung oder???das mit dem CopyFile hat vorhin auch mal funktioniert nur jetzt nciht mehr bin aber auf fehler suche....
-
Hmm, was funktioniert denn nicht? Wird das File überhaupt nicht kopiert oder wird es erstellt aber ohne Inhalt ?
Gruß
:: NoName ::
-
Hallo,
tschuldigung hab den fehler gefunden gehabt.
Der Pfad war falsch abgelegt worden (mit zuvielen zeichen)
Hatte es endeckt und jetzt geht es auchDanke
-
Hallo,
ich noch mal:
kann das sein das die Files dananch:
::CopyFile(altesfile, nameneu, TRUE);
noch geöffnet sind???
Weil die Kopie wird erstellt, ich kann aber aus dem file nichts lesen, daher meine Frage.
-
Hmm, scheint so. Versuch doch mal mit CFile::Close() die Datei zu schließen und danach die restlichen Parameter einzusetzen ( CFile::Read etc. )
Gruß
:: NoName ::
-
sorry
aber ich weiss nciht wie ich das so schlieesen soll, auch mit deinen angaben.
Hab eben in der msdn gesucht, aber irgendwie weisds cih echt nciht wie
-
Hmm, naja. Du öffnest doch sicherlich dein File mit CFile oder CStdioFile, stimmts?
Dann könntest du es so machen :
CStdioFile file; file.Open("Pfaad", CFile::modeRead); file.Close(); // ... Hier restliche Oprationen...
Gruß
:: NoName ::
-
Nee ich tu keines der an der Kopierten files öffnen, zumindest nicht so.
ausser das:
::CopyFile(altesfile, nameneu, TRUE);
schreib ich nichts. und das file wird ohne probs erstellt.
nur jetzt mit der weiter verarbeitung habe ich probleme.