Dateianfang schreiben

CodeFatal

Erfahrenes Mitglied
Guten Morgen!
ich möchte nach dem ich mir mit
Code:
	HANDLE hFile;		// MP3 öffnen
	hFile = CreateFile(FileName,				                // Filename mit Pfad
				GENERIC_READ | GENERIC_WRITE,	                // Access Mode
				0,						// no sharing 
				NULL,						// no security attributes
				OPEN_EXISTING,					// opens existing  
				FILE_ATTRIBUTE_NORMAL,			        // default attributes 
				NULL);						// no template file
ein Handel auf ein File geholt habe quasi den Anfang einer Datei beschreiben. D.h. die ursprünglichen Daten der Datei sollen erhalten beleiben und nur etwas nach "rechts" verschoben werden.
Ich hab es schon mit
Code:
	WriteFile(hFile, &Buf, nBytesToWrite, &nBytesWritten, NULL);
probiert, aber das überschreibt mir nur den Anfang. :(
Muss ich erst die ganze Datei einlesen und dann erst meine neuen Daten in die Datei schreiben und anschließend die alten anfügen?
Gibt es nicht irgendeine bessere Methode, die evt. nicht ganz so langsam ist?

Danke und Gruß
Michael
 
moin


Mir ist auch nur die Möglichkeite bekannt, erst alles aus der Datei zu holen, dann zu verarbeiten und dann wieder in die Datei zu packen.

Es ginge wohl auch noch immer erst alles in der Datei ein Zeichen weiter zuschieben und dann vorne was einzufügen, aber das wird "viel" Rechenzeit benötigen.


Noch eine Theorie:
Vielleicht ist es möglich den Dateianfang zu verschieben, so dass vorne freier Platz entsteht. Ich vermute aber das das nicht so einfach geht.


mfg
umbrasaxum
 
Sowas geht leider nicht, obwohl es manchmal furchtbar praktisch wäre.

Lade einfach die Original-Datei Stück für Stück (kann ja etwas grösser werden), und schreibe alles in eine andere, neue Datei. An der Stelle, wo du etwas einfügen willst, schreibst du das in die andere Datei. Danach beide schliessen, und die neue, temporäre über die alte kopieren.
 
Hi!
Danke für die Antworten. werd's mal probieren. mal sehen was am schnellsten ist, falls sich da überhaupt was tut.

Gruß Michael
 
Zurück