Große Dateien erstellen/kopieren



  • Hallo zusammen,

    wie erstellt/kopiert man am besten große Dateien (4GB) in einem C/C++-Programm (unter Win)?

    Ich habe schon einen Versuch mit fstream gestartet, bin aber mit der Übertragungsrate nicht zufrieden bzw die Möglichkeiten der Festplatte wurden bei weitem nicht ausgereitzt.

    Das Erstellen der Datei habe ich mit ofstream gemacht. Also einfach einen zuvor angelegten Speicherbereich (Array mit zufälligen Werten) in die Datei geschrieben. Dabei lag die CPU-Auslastung bei 100%. Könnte dafür nicht der DMA-Controller eingesetzt werden?

    Um die Datei nachher zu kopieren lese ich einzelne Blöcke (zB 10MB) aus der Datei und schreibe sie in die neue Datei.

    Das dauert leider alles viel zu lange. Weiss jemand wie man über ATA-Kommandos Daten auf eine Festplatte schreiben kann?

    Mir geht es nur um den Schreibvorgang an sich, nicht darum dass man die Daten nachher zB unter Windows verwenden kann (Test für Solid State Disks). h2benchw zB schreibt Daten auf eine Platte, die keine Partitionen enthält. Weiss jemand wie das gemacht wird?

    Würde mich freuen wenn einer nen Tipp für mich hat.

    Grüße
    Sebastian



  • mit den OS Funktionen WriteFile() und CopyFile() bekommt man deutlich höhere Transferraten.

    Grüße
    Sebastian



  • Kannst es ja mal mit Pipes versuchen, evtl. gehts damit ja auch?

    Greetz Tobi


Anmelden zum Antworten