Zum Inhalt springen

Sicherungskopie einer geöffneten Datei erstellen


lempy

Empfohlene Beiträge

Hallo Leute

Ich habe einen kleinen Texteditor erstellt und möchte nun die Dateien, die ich mit dem"openFileDialog" öffne beim öffnen in eine .BAK-Datei Sichern oder Kopieren.

Dabei soll der Name der Datei beibehalten werden und nur die Endung sich ändern. Aus Text.doc z. B. wird dann Text.bak. Falls es schon eine Sicherungskopie von dieser Datei gibt, dann soll sie überschrieben werden.

Wenn ich das richtig sehe ist eine "BAK-Datei" immer eine Sicherungskopie einer Datei. Also müsste meine Methode ungefähr so heißen:



Void Copy(String ^Quelldatei, String ^zieldatei, bool ueberschreiben)


Quelldatei ist dabei meine Text.doc und Zieldatei Text.bak das Überschreiben bewirkt dann die Bool-Anweisung in der überprüft wird ob es die Datei Text.bak schon gibt. Das ganze Kopieren der Datei müsste dann in der Methode "Void openFileDialog1_FileOK" aufgerufen werden und zwar nach dem Laden der Datei. Hier meine eigene Methode zum kopieren der Datei:



Void sicherungsKopie(String ^dateiname, String ^kopie, Boolean ^ueberschreiben)

			 {

				 dateiname = openFileDialog1->FileName;

				 kopie = dateiname;			// kopie erhält den Namen der Datei 

				 kopie = (dateiname,"C:\\Users\\dag\\Desktop\\test\\Archiv\\*.bak");			// ?	


				 ueberschreiben =					// ?


				 File::Copy(dateiname, kopie );

			 }


Meine "FileoK"-Methode:


private: System::Void openFileDialog1_FileOk(System::Object^  sender, System::ComponentModel::CancelEventArgs^  e) 

		 {

			 // den Namen setzen

			 dateiname = openFileDialog1->FileName;

			 this->Text = dateiname;


			 // die Datei laden

			 richTextBox1->LoadFile(dateiname);


[B]Hier müsste ich dann meine Kopiermethode aufrufen[/B]

			 // die Eigenschaft Modified zur Sicherheit auf false setzen

			 richTextBox1->Modified = false;



		 }


Ich komme einfach auf keine Idee, wie ich den Namen der Quelldatei an die Zieldatei übergebe und dann noch mit der Endung .bak versehe. Die Abfrage, ob die Bak-Datei vorhanden ist denke ich mal wird so aussehen können.:


if(IO::File::Exists(kopie))

{

überschreibe ???


Lieben Dank für Eure Hilfe

lempy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin!

Du arbeitest mit dem .net-Framework, also brauchst Du keine eigene Copy-Methode schreiben, sondern kannst mit File.Copy arbeiten. Wenn Du die Sicherungskopie immer überschreiben willst, kannst Du den Parameter "overwrite" einfach auf true setzten, dann musst Du auch nicht prüfen, ob die Datei existiert.

Ich verstehe nicht ganz, was Du damit meinst "den namen der Quelldatei an die Zieldatei zu übergeben.". Der Name ist doch gleich, nur die Erweiterung ist anders, d.h. Du musst einfach die Endung abtrennen und die Endung "bak" anfügen. Stichworte zur Recherche wären hier String.LastIndexOf oder Regex(vielleicht noch etwas viel für den Anfang).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Pointerman

"Quelldatei an Zieldatei" übergeben. Meine Quelldatei habe ich schon in einen Ordner. Also der Name Text.doc ist schon vergeben und diese Datei möchte z. B. zum Bearbeiten öffnen. Beim Öffnen soll eine weitere Datei entstehen, die den selben Inhalt hat wie meine Text.doc bevor ich meine Änderungen vorgenommen habe. Diese Datei soll dann aber als Text.bak in z. B. einen anderen Ordner "gesichert" werden.

Quelle = Text.doc, Ziel = Text.bak in ? Ordner. Die "Variable" Dateinamen bezieht sich auf Text.doc aber aus dem doc soll ein .bak werden. Da fehlt mir die Idee wie ich das anstellen.

Wie trennen ich die Endung ab?

Zu Repac3r

MSDN ist sehr gut, aber auch nur wenn man nicht wie ich Anfänger ist und das ganze in seiner engbemessenen Freizeit macht. Vieles verwirrt einen Anfänger nur. Das sind die meisten Artikel, die sich mit C++/CLI und Forms beschäftigen. Ich brauche eher so eine Hilfe wie " ... für Dummys". Es ist nicht immer leicht den Einstieg wieder ordentlich zu finden.

Zu SilentDemise:

Na ja, ist so mein ding. Ich denke oft über tausend Ecken und daher viel zu kompliziert. Aber es hilft mir auch dabei Dinge von anderen Seiten zu betrachten.

Auf jeden Fall werde ich mir Eure Stichworte notieren und danach Recherche betreiben. Melde mich danach.

Lieber Gruß

lempy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo lempy,

Zitat:"Die "Variable" Dateinamen bezieht sich auf Text.doc aber aus dem doc soll ein .bak werden. Da fehlt mir die Idee wie ich das anstellen."

Suchst du zufällig (einfach nur) nach Möglichkeiten zur Stringmanipulation in .Net (Dein Stichwort!) ;) zum Beispiel "Ersetzen" (Replace) ?

Als Tip! Behalte doch die alte Dateierweiterung bei und füge nur ein .bak an somit weiss man auch auf anhieb um was für eine Sicherung es sich handelt ;) !

Gruß

Patrick

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...