Datei streams



  • Guten tag Leute, ich habe grade eine Funktion geschrieben
    in der ich die Filestreams benutze. Ich benutze
    diese um ein eine Datei einzulesen und schreibe diese dann
    mit anderen Namen neu, nur ist die neue Datei aus
    irgendeinem Grund immer größer und nicht ausführbar ( es geht
    um eine DLL die dabei wohl geschrottet wird ). Ich habe
    schon ne Zeit lang rumprobiert und auch gegooglet aber
    bin leider nicht weiter gekommen deswegen der post. Habe schon
    das meiste auskommentiert und trotzdem will es einfach nicht.
    Hier mal der Code der jetzt noch läuft, jedoch beim schreiben
    die Datei auch wieso auch immer größer macht:

    int sizeoffile = 0;
    ifstream file;
    file.open(path, ios::binary );
    if(file.fail() || !file.is_open())
    {
    	file.close();
    	return;
    }
    file.seekg (0, ios::end);
    sizeoffile = file.tellg();
    file.seekg (0, ios::beg);
    char *buffer = new char[sizeoffile];
    file.read(buffer, sizeoffile);
    ofstream datei;
    datei.open("newfile.dll", ios_base::out);
    datei.write(buffer, sizeoffile);
    file.close();
    datei.close();
    

    Die neu geschriebene DLL ist um ca 0,2 MB größer
    und ich kann mir einfach nicht erklären warum.
    Wenn ihr wisst was ich falsch mache, bitte ich euch
    mir meinen Fehler zu erklären, und ggf ein Beispiel
    zu posten wies richtig geht.

    ps:
    Das öffnen und einlesen der Datei klappt,
    das schreiben auch jedoch falsch wie beschrieben :>

    Gruß
    Heinz


  • Mod

    Das ist alles richtig.

    Ich kann mir nur noch exotische Fehlerquellen ausdenken, die aber höchstwahrscheinlich nicht vorliegen:
    - Ist die Datei vielleicht zu groß für den Arbeitsspeicher?
    - Wird die Datei während des Lesens von einem anderen Programm verändert?



  • was passiert dnen, wenn du nen txt-dokument nimmst? sieht eigtl korrekt aus
    und wieso machst du das eigtl so umständlich?
    du könntest ja auch von der einen datei direkt in die andere schreiben!?

    bb



  • In Zeile 15 würde ich noch mal

    datei.open("newfile.dll", ios_base::binary );
    

    versuchen.



  • Werner Salomon schrieb:

    In Zeile 15 würde ich noch mal

    datei.open("newfile.dll", ios_base::binary );
    

    versuchen.

    Sowas simples und ich komm nichtmal selber drauf :S
    Daran lags danke dir


Anmelden zum Antworten