Seite 1 von 1

Schnell eine leere Datei schreiben

Verfasst: 10.02.2005 23:01
von Justy
Hallo!

Was gibts für Möglichkeiten eine sehr große Datei (1-2gb) mit Chr(0) (oder sonstwas, ist ziemlich egal) SCHNELL vollzuschreiben?
Mit WriteByte(Chr(0)) geht nichts weiter, da schafft man höchstens 3 mb/s!

In den Foren und im CodeArchiv hab ich gesucht aber nichts gefunden.

Danke für eure Hilfe!
Justy



[EDIT]
Hab grad WriteData gesehen!
Dazu ne frage: wie viel speicher kann ich höchstens auf einmal verwenden, ich nehm mal an 2gb wärn da nicht so gut :mrgreen:

Verfasst: 10.02.2005 23:12
von MVXA
du kannst maximal soviel speicher verwenden wie dein Opfer RAM hat. NUr du musst aufpassen da nicht unbedingt jeder eine schnelle Festplatte hat und so das füllen etwas Systemabhängig wird.

Verfasst: 10.02.2005 23:18
von NicTheQuick
Erstell dir einen Speicherbereich mit [c]AllocateMemory()[/c] der Größe [c]64 * 1024 Bytes[/c] oder so ähnlich und schreibe diesen Block dann mehrmals mit [c]WriteData()[/c] nacheinander in eine Datei.
Zum Beispiel so:

Code: Alles auswählen

ChunkSize.l = 1024 * 1024 ; 1 MB
Size.l = 1024 * 1024 * 1024 ;  1 GB
Parts.l = Size / ChunkSize ; 1024

File.s = "J:\Muelldatei2.dat"

Time.l = ElapsedMilliseconds()
FileID.l = CreateFile(#PB_Any, File)
If FileID
  *Mem = AllocateMemory(ChunkSize)
  For a.l = 1 To Parts
    WriteData(*Mem, ChunkSize)
  Next
  FreeMemory(*Mem)
  CloseFile(FileID)
EndIf
Time = ElapsedMilliseconds() - Time
MessageRequester("Zumüllprogramm", "Benötigte Zeit für " + Str(Size) + " Bytes zu schreiben: " + Str(Time) + " ms.")
; Beispiele von mir:
; 124329 ms für   1 GB auf O:\ ( 8,25 MB/s)
;  14863 ms für 300 MB auf J:\ (20,27 MB/s)

Verfasst: 10.02.2005 23:21
von Justy
danke für eure extrem schnellen antworten!


[EDIT]
Achja, dass da keine Missverständnisse aufkommen, ich brauch das nicht für einen Festplatten-Spammer sondern um leere Images für eine Virtual Machine zu erstellen! :mrgreen: