Große Datei stueckeln



  • halli hallo,

    ich habe hier eine datei, die 8gb groß ist, welche ich gerne in mehrere kleinere dateien stueckeln moechte. ich programmiere sonst immer mit reinem c, wo ich nun aber nicht weiter komme, da mit den normalen dateioperation lediglich bis 4 gb adressiert werden kann.

    da ich in Windowsprogramierung nicht sonderlich bewandert bin, wollte ich fragen, ob mir jemand mit ein paar funktionen auf die sprunge helfen kann...



  • Sorry, ich dachte es geht darum die Datei zu versenden



  • Es geht ihm doch nicht um Sockets?



  • Das müsste eigentlich mit den normalen Datei-Funktionen "CreateFile", "ReadFile", "WriteFile", "CloseFile" und evtl. noch "SetFilePointer" zu lösen sein.



  • Mit SetFilePointer () kannst Du den sog. "Dateizeiger" an eine beliebige Position innerhalb der 8-GB-Datei setzen und mit ReadFile () von dort einlesen.

    Aber vorher die Datei mit CreateFile () öffnen.



  • okay, dann werde ich mich mal rantasten... aber wie schaffe ich es denn mit ReadFile zeilenweise zu lesen?



  • indem du in einen geeignet großen zeilenbuffer einliest, mit strchr das nl-zeichen suchst und dort oder dahinter den char durch 0 ersetzt. sozusagen ein self-made fgets.



  • BigFile schrieb:

    ... ich programmiere sonst immer mit reinem c ...

    kannste beibehalten, dein reines c (fread, etc).
    mit dem datentyp double kannst du die dateigröße bis 999999999999999.0 byte kontrollieren.
    mfg,
    k.k.



  • Hat man damit auch Zugriff auf Position 999999999999998.0 ?



  • ganzzahl schrieb:

    Hat man damit auch Zugriff auf Position 999999999999998.0 ?

    brauche ich die? ich denke nicht.
    du kannst doch die bytes pufferweise so lange in eine datei ( teilstück der grossen datei ) schaufeln, bis eine bestimmte anzahl bytes ( maximal 999999999999999.0 ) erreicht ist.
    dann wird eine neue datei ( neues teilstück ) erzeugt usw.


Log in to reply