<?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[grosse dateien effektiv auslesen]]></title><description><![CDATA[<p>mahlzeit</p>
<p>es geht darum -</p>
<p>bister hab ich immer die datei mit CFile geoeffnet - ein teil ausgelesen - innen vector und dann das naechste teil auslesen</p>
<p>der vorteil dabei ist das die datei auch groesser sein kann</p>
<pre><code class="language-cpp">if( cfile.Open( m_csFileName, CFile::modeRead | CFile::typeBinary, &amp;ex ) )
{
    const int iSIZE = 512;
    byte bBuffer[ iSIZE ] = { '\0' };
    UINT uiRead =0;
    while( uiRead = cfile.Read( bBuffer, iSIZE ) )
    {
        if( uiRead &lt;= iSIZE )
            m_vContent.insert( m_vContent.end(), &amp;bBuffer[0], &amp;bBuffer[uiRead] );
    }
    cfile.Close();
}
</code></pre>
<p>achso und ich lese binaer aus {brauch ich fuer den spaeteren ablauf</p>
<p>nu stellt sich mir die frage</p>
<p>was ist mit</p>
<pre><code class="language-cpp">std::ifstream file( m_csFileName );
std::copy( std::istream_iterator&lt; char &gt;( file ), std::istream_iterator&lt; char &gt;(), std::back_inserter( m_vContent ) );
</code></pre>
<p>wuerde das funktionieren und vor allem binaer ?<br />
wie ist das mit der laufzeit und bei besonders grossen dateien ?<br />
{laenge und inhalt alles unbekannt}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/161526/grosse-dateien-effektiv-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 07:12:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161526.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Oct 2006 15:46:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to grosse dateien effektiv auslesen on Sat, 07 Oct 2006 15:46:56 GMT]]></title><description><![CDATA[<p>mahlzeit</p>
<p>es geht darum -</p>
<p>bister hab ich immer die datei mit CFile geoeffnet - ein teil ausgelesen - innen vector und dann das naechste teil auslesen</p>
<p>der vorteil dabei ist das die datei auch groesser sein kann</p>
<pre><code class="language-cpp">if( cfile.Open( m_csFileName, CFile::modeRead | CFile::typeBinary, &amp;ex ) )
{
    const int iSIZE = 512;
    byte bBuffer[ iSIZE ] = { '\0' };
    UINT uiRead =0;
    while( uiRead = cfile.Read( bBuffer, iSIZE ) )
    {
        if( uiRead &lt;= iSIZE )
            m_vContent.insert( m_vContent.end(), &amp;bBuffer[0], &amp;bBuffer[uiRead] );
    }
    cfile.Close();
}
</code></pre>
<p>achso und ich lese binaer aus {brauch ich fuer den spaeteren ablauf</p>
<p>nu stellt sich mir die frage</p>
<p>was ist mit</p>
<pre><code class="language-cpp">std::ifstream file( m_csFileName );
std::copy( std::istream_iterator&lt; char &gt;( file ), std::istream_iterator&lt; char &gt;(), std::back_inserter( m_vContent ) );
</code></pre>
<p>wuerde das funktionieren und vor allem binaer ?<br />
wie ist das mit der laufzeit und bei besonders grossen dateien ?<br />
{laenge und inhalt alles unbekannt}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151073</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Sat, 07 Oct 2006 15:46:56 GMT</pubDate></item><item><title><![CDATA[Reply to grosse dateien effektiv auslesen on Sat, 07 Oct 2006 17:23:31 GMT]]></title><description><![CDATA[<p>probiers doch aus.</p>
<p>Es wird halt die ganze Datei in den Speicher gelesen. Aber das tust du bei der CFile-Variante ja auch. Dass das, bei Gigabyte-Größenordnungen. nicht mehr so gut ist, sollte klar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151130</guid><dc:creator><![CDATA[DrGreenthumb]]></dc:creator><pubDate>Sat, 07 Oct 2006 17:23:31 GMT</pubDate></item><item><title><![CDATA[Reply to grosse dateien effektiv auslesen on Sat, 07 Oct 2006 18:36:29 GMT]]></title><description><![CDATA[<p>Die ganze Datei in den Speicher zu laden ist extrem schlecht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151150</guid><dc:creator><![CDATA[aaaaaaa]]></dc:creator><pubDate>Sat, 07 Oct 2006 18:36:29 GMT</pubDate></item><item><title><![CDATA[Reply to grosse dateien effektiv auslesen on Sun, 08 Oct 2006 09:40:01 GMT]]></title><description><![CDATA[<p>aaaaaaa schrieb:</p>
<blockquote>
<p>Die ganze Datei in den Speicher zu laden ist extrem schlecht.</p>
</blockquote>
<p>in diesem fall aber notwendig {o; - genaueres darf ich nicht sagen {o;</p>
<p>es geht halt darum, in der CFile variante les ich nur ein teil aus und pack den innen vector, dann der naechste teil</p>
<p>der vorteil dabei ist das man den gesamten inhalt erst im vecor hat nicht in der zwischen variable</p>
<p>zudem noch die frage ob es auch binaer ausgelesen wird bei der fstream variante - das ist besonders wichtig</p>
<p>durch testen seh ich grad {beim auslesen des speichers im debugger} das in der ifstream variante der gesamte inhalt ohne leerzeichen gespeichert wird, das darf natuerlich nicht sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151317</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Sun, 08 Oct 2006 09:40:01 GMT</pubDate></item><item><title><![CDATA[Reply to grosse dateien effektiv auslesen on Sun, 08 Oct 2006 22:31:41 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<pre><code class="language-cpp">const int iSIZE = 512;
...
    while( uiRead = cfile.Read( bBuffer, iSIZE ) )
</code></pre>
</blockquote>
<p>ja, das ist schonmal brauchbar. iSIZE sollte 4096 sein, denn soe viel liest Win auf einen hops nach meinen messungen. wäre auch recht sinnvoll in sachen speicherseiten.</p>
<blockquote>
<p>wie ist das mit der laufzeit und bei besonders grossen dateien ?<br />
{laenge und inhalt alles unbekannt}</p>
</blockquote>
<p>nicht super. das lesen selbst ist recht fix. vielleicht zwischen 95% und 99% des optimums. aber das speichern im speicher ist die hölle. das umkopieren geht ja auich noch, aber das besorgen des soeichers, das anwerfen dewr auslagerunfgsdatei, nur um ne kopie von daten zu kriegen, die eh auf platte liegen. aua.</p>
<p>alle modernen betriebssysteme für x86-rechner haben kram, um ne auslagerungsdatei zu benutzen. und sie biten darüberhinaus dem programmierer an, den selben kram für eigene dateien zu verwenden. was du für riesige dateien machen musst, ist folgendes: bitte dein betriebssystem, die den gesamten dateiinhalt in deinen adressraum zu spiegeln, so als wäre es eine kleine private auslagerungsdatei. dabei wird noch kein physikalischer soeicher verwendet. wenn du dann auf speicher in dem spiegelber3ich zugreifst, wird automatisch aus der datei geladen. und es wird auch automatisch ram dafür freigemacht (auch aus deinen spiegelseiten), wenn nicht mehr gebraucht. du sparrst dir damit alles umkopieren und hast optimale performance. für win schau nach CreateFileMapping() und für andere betriebssysteme schau nach mmap().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151714</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 08 Oct 2006 22:31:41 GMT</pubDate></item><item><title><![CDATA[Reply to grosse dateien effektiv auslesen on Mon, 09 Oct 2006 18:38:11 GMT]]></title><description><![CDATA[<p>vielen dank fuer die ausfuehrliche info</p>
<p>ich hab das problem des auslesen mitlerweile so geloest</p>
<pre><code class="language-cpp">std::ifstream file( pcFileName, std::ios_base::binary );
if( !file.is_open() )
	return ERR_ATTACH;
std::copy( std::istreambuf_iterator&lt; char &gt;( file ), std::istreambuf_iterator&lt; char &gt;(), std::back_inserter( m_vContent ) );
</code></pre>
<p>was du alles ueber das spiegeln usw schreibst muss ich spaeter wenn ich mehr zeit und muse hab nochmal durchlesen #gg</p>
<p>auf jeden fall brauch ich saemtliche daten aus einer datei - muss die convertieren und in einer neuen datei abspeichern</p>
<p>mir unbekannt ist des format in dem es kommt und das format in dem es gespeichert wird - auch die groesse der datei - und die quelldatei darf nicht manipuliert werden</p>
<p>das 1gb dateien damit benutzt werden ist sehr unwahrscheinlich - ich denk mir maximal 10 oder 20mb daten</p>
<p>das programm hab ich ja shcon laenger funktionierend am laufen - wollte nur wissen wegen effektivitaet wenns 20mb dateien sind {oder gar groesser}</p>
<p>hab eigentlich schon zuviel gesagt {is n komerzielles produkt #gg}</p>
<p>danke nochmal und gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151756</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Mon, 09 Oct 2006 18:38:11 GMT</pubDate></item><item><title><![CDATA[Reply to grosse dateien effektiv auslesen on Mon, 09 Oct 2006 22:03:28 GMT]]></title><description><![CDATA[<p>warum nicht dateigröße ermitteln, speicher für die ganze datei holen und dann ein Read-aufruf direkt in den vector?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151867</guid><dc:creator><![CDATA[h]]></dc:creator><pubDate>Mon, 09 Oct 2006 22:03:28 GMT</pubDate></item><item><title><![CDATA[Reply to grosse dateien effektiv auslesen on Tue, 10 Oct 2006 01:46:32 GMT]]></title><description><![CDATA[<blockquote>
<p>mir unbekannt ist des format in dem es kommt und das format in dem es gespeichert wird</p>
</blockquote>
<p>Was machst du dann überhaupt mit den Daten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151906</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Tue, 10 Oct 2006 01:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to grosse dateien effektiv auslesen on Tue, 10 Oct 2006 06:47:21 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<p>das 1gb dateien damit benutzt werden ist sehr unwahrscheinlich - ich denk mir maximal 10 oder 20mb daten</p>
</blockquote>
<p>Dann wuerd ich mir mal nicht gross Gedanken drueber machen. &quot;GROSSE&quot; Dateien sind ganz was anderes.</p>
<blockquote>
<p>hab eigentlich schon zuviel gesagt</p>
</blockquote>
<p><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="🙄"
    /> Wir werden jetzt alle Dateiformats-Kopierprogramme schreiben und deiner Firma den Auftrag wegnehmen....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151936</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Tue, 10 Oct 2006 06:47:21 GMT</pubDate></item><item><title><![CDATA[Reply to grosse dateien effektiv auslesen on Tue, 10 Oct 2006 09:03:58 GMT]]></title><description><![CDATA[<p>Blue-Tiger schrieb:</p>
<blockquote>
<p><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="🙄"
    /> Wir werden jetzt alle Dateiformats-Kopierprogramme schreiben und deiner Firma den Auftrag wegnehmen....</p>
</blockquote>
<p>wer sagte das ich sowas mach ? #gg<br />
mein tool ist nur ein bestandteil und wird fuer das erstellen der eigentlichen programme benoetigt {o;</p>
<p>nu is gut #gg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1152035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1152035</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Tue, 10 Oct 2006 09:03:58 GMT</pubDate></item></channel></rss>