hoch fragmentierte Dateien ( TFileStream)
-
Hallo Leute ,
ich arbeite schon länger an einem Tool mit dem ich Dateien downloaden will,
ich dache eigtl. ich wär fertig als mir auffiel das die heruntergeladenen Dateien bei 100 MB bis zu 400 Fragmente haben ( und noch mehr !).Dazu müsste man evtl. sagen das jeder Download einen Thread darstellt bei dem die entscheidende stelle Diese wäre (denke ich ):
try{ File->ReadBuffer(BUFFER,Counter); //LESEN NewFile->WriteBuffer(BUFFER,Counter);//SCHREIBEN FilePosition=FilePosition+Counter; //HOCHZÄHLEN }catch (EWriteError &exception )
Dazu möchte ich noch sagen dass , das Stückchenweise Kopieren absichtlich ist da ein resuming bei Transferabbruch ermöglicht werden soll und ist.
Die Probleme stellen sich bei mehr als einem Download Thread ein .
Würde mich sehr über hilfe freuen .
-
also entweder zu anfang schon die datei groß machen und nachher reinschreiben. da müßtest du aber noch zusätzliche dateien anleen, die sagen, wie weit die eigentlichen dateien sind.
oder nach dem downloaden die datei noch mal kopieren. könnte sich eh anbieten, sie erst in nem temp-verzeichnis zu haben, und erst, wenn sie komplett sind, ins downgeloaded-verzeichnis zu stecken.
-
Kopieren bringt leider nichts weil windows sich beim zugriff auf die fragmentierten datein sich nen ast abholt (!!busy!!)
die Frage ist wie erstelle ich ne datei die sofort 800Mb groß ist ??
damit die fragmentierung beim abwechselnden schreiben nicht passiert ??Danke für diese und weitere Antworten
-
Hmmm ich bilde mir ein, es reicht wenn man mittels seek den Dateizeiger Anfang + 800MB schiebt... bin mir aber nicht ganz sicher und hab im Moment keinen BCB da zum testen.
-junix
-
jo, und dann sowas wie SetEndOfFile
-
@ junix das habe ich mir auch gedacht funktioniert aber leider nicht
mhhh...
aber SetEndOfFile is ne überlegung wert ,
dann werd ich wohl nicht drumherumkommen den download auf WinAPI umzustricken
thx
Gagget