<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[fstream] große Dateiblöcke aus einer Datei in eine neue schreiben]]></title><description><![CDATA[<p>Ich bin grad dabei ein Programm zu entwickeln, mit welchem ich eine Art File-Container anbieten kann. D.h. es werden sagen wir beispielhaft 10 Dateien in einen Store geschrieben. Mein Konzept dafür sieht so aus, dass alle Dateien des Stores in eine Einzige geschrieben werden und die Start- und Endposition in einer Config-Datei gespeichert werden. Das Hinzufügen und Extrahieren klappt auch problemlos, wobei sich das Extrahieren bei zu großen Dateien (ab 30 MB) extrem in die Länge ziehen kann, da ich ja aus der Store-Datei jedes Zeichen ab der Startposition auslese und in die neue Datei schreibe. Hat da jemand eine Idee wie das schneller zu lösen wäre? Also wie ich schnell einen großen Block Daten aus einer Datei von einer beliebigen Position an in eine neue Datei kriege?</p>
<p>Beim Hinzufügen habe ich das Problem dank rdbuf nicht, da Dateien, die hinzugefügt werden einfach an das Ende der Store-Datei gepappt werden ..</p>
<p>Hintergrund für eine Store-Datei (und nicht für jede hinzugefügte Datei eine extra Datei) ist, dass ich den Store a) Passwort geschützt öffnen lasse und b) ich alle Dateien einfach transportieren lassen will (praktisch wie ein Archiv).</p>
<p>Danke schon mal für Ideen und Vorschläge <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Mfg Fake oder Echt</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/293051/fstream-große-dateiblöcke-aus-einer-datei-in-eine-neue-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 12:26:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/293051.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Sep 2011 23:44:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Fri, 23 Sep 2011 23:44:01 GMT]]></title><description><![CDATA[<p>Ich bin grad dabei ein Programm zu entwickeln, mit welchem ich eine Art File-Container anbieten kann. D.h. es werden sagen wir beispielhaft 10 Dateien in einen Store geschrieben. Mein Konzept dafür sieht so aus, dass alle Dateien des Stores in eine Einzige geschrieben werden und die Start- und Endposition in einer Config-Datei gespeichert werden. Das Hinzufügen und Extrahieren klappt auch problemlos, wobei sich das Extrahieren bei zu großen Dateien (ab 30 MB) extrem in die Länge ziehen kann, da ich ja aus der Store-Datei jedes Zeichen ab der Startposition auslese und in die neue Datei schreibe. Hat da jemand eine Idee wie das schneller zu lösen wäre? Also wie ich schnell einen großen Block Daten aus einer Datei von einer beliebigen Position an in eine neue Datei kriege?</p>
<p>Beim Hinzufügen habe ich das Problem dank rdbuf nicht, da Dateien, die hinzugefügt werden einfach an das Ende der Store-Datei gepappt werden ..</p>
<p>Hintergrund für eine Store-Datei (und nicht für jede hinzugefügte Datei eine extra Datei) ist, dass ich den Store a) Passwort geschützt öffnen lasse und b) ich alle Dateien einfach transportieren lassen will (praktisch wie ein Archiv).</p>
<p>Danke schon mal für Ideen und Vorschläge <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Mfg Fake oder Echt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123145</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Fri, 23 Sep 2011 23:44:01 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sat, 24 Sep 2011 00:08:10 GMT]]></title><description><![CDATA[<p>30 MB groß? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Hat man dich 1990 eingefroren und jetzt wieder aufgetaut? Lies das Ding doch einfach komplett ein!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123153</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 24 Sep 2011 00:08:10 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sat, 24 Sep 2011 00:14:50 GMT]]></title><description><![CDATA[<p>Meinst du über read () anstatt über get () ?<br />
Das war mir zu Speicher-intensiv deshalb bin ich auf die glorreiche Idee gekommen den User einfach warten zu lassen und jedes Zeichen einzeln auszulesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>&amp; 30MB sind für meine bisherige Lösung groß, gemessen an der Zeit, die dafür zum Extrahieren benötigt wird ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123158</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Sat, 24 Sep 2011 00:14:50 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sat, 24 Sep 2011 00:32:24 GMT]]></title><description><![CDATA[<p>Fake oder Echt schrieb:</p>
<blockquote>
<p>Meinst du über read () anstatt über get () ?<br />
Das war mir zu Speicher-intensiv deshalb bin ich auf die glorreiche Idee gekommen den User einfach warten zu lassen und jedes Zeichen einzeln auszulesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>Ehrlich gesagt weiß ich nicht ganz genau, was du überhaupt machen willst, weil dein Beitrag so verfasst ist, dass ich ihn ohne weitere Hintergrundinformationen nicht verstehen kann. Was ich mitgenommen habe ist, dass du aus irgendeinem Grund zeichenweise in einer Datei rumliest und dir dies zu langsam ist. Allgemeine Abhilfe dagegen ist, dass man sich alles im Block liest (geht sehr schnell) und dann im Arbeitsspeicher die zeichenweisen Aktionen durchführt (auch recht schnell).</p>
<blockquote>
<p>&amp; 30MB sind für meine bisherige Lösung groß, gemessen an der Zeit, die dafür zum Extrahieren benötigt wird ^^</p>
</blockquote>
<p>Ach nun komm. Ich sitze gerade an einem Rechner mit 12 GB RAM. Die (nicht SSD-)Festplatte liefert mir rund 150 MB/s. Ich wette, dein System ist nicht viel anders. Wenn 30 MB da irgendwie eine nennenswerte Begrenzung sind, dann machst du etwas massiv falsch.</p>
<p>Es ist zwar immer hübsch und elegant, optimale Lösungen mit minimalem Festplattenzugriff zu suchen, aber manchmal ist es doch das einfachste, die moderne Technik auch mal auszunutzen und den direkten Lösungsweg zu wählen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123160</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 24 Sep 2011 00:32:24 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sat, 24 Sep 2011 00:40:02 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Es ist zwar immer hübsch und elegant, optimale Lösungen mit minimalem Festplattenzugriff zu suchen, aber manchmal ist es doch das einfachste, die moderne Technik auch mal auszunutzen und den direkten Lösungsweg zu wählen.</p>
</blockquote>
<p>Ja da hast du Recht .. ich hab immer noch die Angewohnheit, möglichst schonend mit den Resourcen umzugehen, was aus der Zeit herrührt, als ich noch mit nem 128 MB RAM, 800 MHz CPU Rechner rumgewerkelt habe .. Da war bei großen Dateioperationen jeder freie Byte im Arbeitsspeicher wichtig ^^<br />
Muss ich mir aber mal abgewöhnen ..</p>
<p>Werde dann mal deinen Vorschlag umsetzen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123161</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Sat, 24 Sep 2011 00:40:02 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sat, 24 Sep 2011 06:35:21 GMT]]></title><description><![CDATA[<p>aber es ist doch abzusehen das aus den 30 mb irgendwann mal viel mehr wird und dann musste wieder alles umproggen weil sich die user über hohen speicherverbrauch beschweren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123169</guid><dc:creator><![CDATA[zukunftseher]]></dc:creator><pubDate>Sat, 24 Sep 2011 06:35:21 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sat, 24 Sep 2011 06:44:18 GMT]]></title><description><![CDATA[<p>Fake oder Echt schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Es ist zwar immer hübsch und elegant, optimale Lösungen mit minimalem Festplattenzugriff zu suchen, aber manchmal ist es doch das einfachste, die moderne Technik auch mal auszunutzen und den direkten Lösungsweg zu wählen.</p>
</blockquote>
<p>Ja da hast du Recht .. ich hab immer noch die Angewohnheit, möglichst schonend mit den Resourcen umzugehen, was aus der Zeit herrührt, als ich noch mit nem 128 MB RAM, 800 MHz CPU Rechner rumgewerkelt habe .. Da war bei großen Dateioperationen jeder freie Byte im Arbeitsspeicher wichtig ^^</p>
</blockquote>
<p>Du tust gerade so, als ob dein Rechner ein C64 war, dabei wars wahrscheinlich ein Pentium und da hat keiner auf einzelne Bytes geschaut. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123172</guid><dc:creator><![CDATA[LollerRoller]]></dc:creator><pubDate>Sat, 24 Sep 2011 06:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sat, 24 Sep 2011 08:16:40 GMT]]></title><description><![CDATA[<p>zukunftseher schrieb:</p>
<blockquote>
<p>aber es ist doch abzusehen das aus den 30 mb irgendwann mal viel mehr wird und dann musste wieder alles umproggen weil sich die user über hohen speicherverbrauch beschweren</p>
</blockquote>
<p>Na und? Besser als wenn er sich jetzt einen abbricht und dann niemals größere Dateien einliest; you ain't gonna need it...<br />
Die Kunst liegt darin, diesen Vorgang (wie jeden anderen auch) so zu kapseln, dass eine spätere Änderung keinen anderen Code betrifft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123181</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sat, 24 Sep 2011 08:16:40 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sat, 24 Sep 2011 10:29:46 GMT]]></title><description><![CDATA[<p>In Pagesize-Blöcken zu lesen sollte ja auch ausreichen, also 4kb Buffer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123199</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Sat, 24 Sep 2011 10:29:46 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sat, 24 Sep 2011 22:18:15 GMT]]></title><description><![CDATA[<p>zukunftseher schrieb:</p>
<blockquote>
<p>aber es ist doch abzusehen das aus den 30 mb irgendwann mal viel mehr wird und dann musste wieder alles umproggen weil sich die user über hohen speicherverbrauch beschweren</p>
</blockquote>
<p>genau deshalb hatte ich ursprünglich gefragt, weil kapazität geht ja bis 2GB (unsigned bis 4) ^^</p>
<p>LollerRoller schrieb:</p>
<blockquote>
<p>Du tust gerade so, als ob dein Rechner ein C64 war, dabei wars wahrscheinlich ein Pentium und da hat keiner auf einzelne Bytes geschaut.</p>
</blockquote>
<p>war ein duron <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> und nein auf einzelne bytes musste ich da natürlich auch nicht achten, wobei kleinvieh irgendwann auch mist gemacht hatte, sagt man ja auch immer so schön <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Ethon schrieb:</p>
<blockquote>
<p>In Pagesize-Blöcken</p>
</blockquote>
<p>So hatte ich das jetz auch gelöst, per Define die Block-Größe bestimmt ..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123344</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Sat, 24 Sep 2011 22:18:15 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sat, 24 Sep 2011 22:22:36 GMT]]></title><description><![CDATA[<p>Nimm statt define ein const int.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123349</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 24 Sep 2011 22:22:36 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sat, 24 Sep 2011 22:23:57 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Nimm statt define ein const int.</p>
</blockquote>
<p>ich wusste das das kommt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123350</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Sat, 24 Sep 2011 22:23:57 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sun, 25 Sep 2011 00:44:08 GMT]]></title><description><![CDATA[<p>Wenn du es schon weisst, mach es doch beim nächsten Mal direkt richtig.</p>
<p>Es gibt keinen Grund, für Konstanten <code>#define</code> zu nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123382</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 25 Sep 2011 00:44:08 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Sun, 25 Sep 2011 11:48:08 GMT]]></title><description><![CDATA[<p>jaja, danke an beide für den hinweis <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123449</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Sun, 25 Sep 2011 11:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to [fstream] große Dateiblöcke aus einer Datei in eine neue schreiben on Mon, 26 Sep 2011 09:30:33 GMT]]></title><description><![CDATA[<p>zukunftseher schrieb:</p>
<blockquote>
<p>aber es ist doch abzusehen das aus den 30 mb irgendwann mal viel mehr wird und dann musste wieder alles umproggen weil sich die user über hohen speicherverbrauch beschweren</p>
</blockquote>
<p>Ist das so abzusehen? Kennst du die konkrete Anforderung oder sagt dir das deine Kristallkugel? Vielleicht ist dieses ominöse <em>irgendwann</em> ja auch erst dann, wenn man 12 TByte RAM hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2123751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2123751</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 26 Sep 2011 09:30:33 GMT</pubDate></item></channel></rss>