<?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 und datein &amp;gt; 2^32 byte]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab mir zu meinem windows explorer ein kleines plugin geschrieben,</p>
<p>es soll für mich wenn ich etwas lösche die datei vorher mit nullen überschreiben damit sie nicht wiederherstellbar sind,</p>
<p>soweit funktioniert das auch gut, aber was ich mich frage ist das:</p>
<p>wenn ich jetzt eine datei größer 2^32 byte löschen will.. also &gt; 4.3~gb wie kriege ich dann die richtige dateigröße?</p>
<p>weil bis jetzt speichere ich die länge in einer int, und die ist standartmäßig bei mir als __int32 deklariert</p>
<pre><code class="language-cpp">File-&gt;seekg(std::ios::end);
		int Lenght = File-&gt;tellg();
		File-&gt;close();
		delete File;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/244421/fstream-und-datein-gt-2-32-byte</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 09:16:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244421.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Jun 2009 05:35:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fstream und datein &amp;gt; 2^32 byte on Tue, 30 Jun 2009 05:36:11 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab mir zu meinem windows explorer ein kleines plugin geschrieben,</p>
<p>es soll für mich wenn ich etwas lösche die datei vorher mit nullen überschreiben damit sie nicht wiederherstellbar sind,</p>
<p>soweit funktioniert das auch gut, aber was ich mich frage ist das:</p>
<p>wenn ich jetzt eine datei größer 2^32 byte löschen will.. also &gt; 4.3~gb wie kriege ich dann die richtige dateigröße?</p>
<p>weil bis jetzt speichere ich die länge in einer int, und die ist standartmäßig bei mir als __int32 deklariert</p>
<pre><code class="language-cpp">File-&gt;seekg(std::ios::end);
		int Lenght = File-&gt;tellg();
		File-&gt;close();
		delete File;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1734847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734847</guid><dc:creator><![CDATA[Schurke]]></dc:creator><pubDate>Tue, 30 Jun 2009 05:36:11 GMT</pubDate></item><item><title><![CDATA[Reply to fstream und datein &amp;gt; 2^32 byte on Tue, 30 Jun 2009 06:14:02 GMT]]></title><description><![CDATA[<p>Wenn du ein *Windows*-Explorer-Addin schreibst würde ich nicht fstream verwenden sondern gleich die WinAPI. Da hast du keinerlei solcher Probleme. Vor allem weil dein seekg()-Aufruf afaik nichtmal standardisiert ist (ergo nicht die Dateigröße zurückgeben muss).</p>
<p>Schau dir GetFileSizeEx aus der WinAPI an.</p>
<p>Dann überschreibe mit CreateFile/WriteFile/CloseFile die Datei.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734852</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Tue, 30 Jun 2009 06:14:02 GMT</pubDate></item><item><title><![CDATA[Reply to fstream und datein &amp;gt; 2^32 byte on Wed, 01 Jul 2009 21:26:59 GMT]]></title><description><![CDATA[<p>Danke, gibt es empfehlungen wie weit ich den buffer pro schreib option nutzen sollte?</p>
<p>weil derzeitig mache ich es so das ich einen 1 mb großen buffer habe, durch den teile ich die file größe wenn dabei bei einer integer division 0 herrauskommt nehme ich die datei größe selbst als buffer größe, um das schreiben zu beschleunigen, ist es sinnvoller einen größeren buffer zu wählen?</p>
<p>hab grad ein problem, er überschreibt die dateien nur stellenweise,</p>
<p>also mal nen paar bytes richtig, nen paar bytes lässt er wieder aus.</p>
<p>gibt aber keinen fehler.</p>
<pre><code class="language-cpp">BOOL ( WINAPI Mine_DeleteFileW )( LPCTSTR lpFileName ){
	std::wstring FileName = lpFileName;
	HANDLE hFile = CreateFileW( FileName.c_str(),
								GENERIC_READ | GENERIC_WRITE, 
								FILE_SHARE_READ, 
								NULL, 
								OPEN_EXISTING,
								FILE_ATTRIBUTE_NORMAL,
								NULL );
	if ( hFile == INVALID_HANDLE_VALUE){
		OutputDebugStringW(L&quot;File handle couldnt be opened&quot;);
	}else{
		__int64 Size;
		int NumWritten;
		if ( !GetFileSizeEx( hFile, (PLARGE_INTEGER)&amp;Size ) ){
			OutputDebugStringW(L&quot;Couldnt optain size of file&quot;);
		}else{
			OutputDebugStringA(IntToString(Size).c_str());
			char * Buffer;
			const int BufferSize = 1048576;// 1Mb	
			if ( Size &gt;= BufferSize ){
				__int64 Rounds = Size / BufferSize;
				int Rest = ( Size - ( Rounds * BufferSize ) );
				Buffer = new char[BufferSize];
				std::fill(Buffer,Buffer+BufferSize,0);
				for ( __int64 i = 0; i &lt; Rounds; i++ ){
					if ( !WriteFile( hFile, Buffer, BufferSize, (PDWORD)&amp;NumWritten, NULL ) ){
						OutputDebugStringW(L&quot;Write file broke inside loop&quot;);					 
						break;
					}
				}
				delete[] Buffer;
				if ( Rest != 0 ){
					Buffer = new char[Rest];
					std::fill(Buffer,Buffer+Rest,0);
					if ( !WriteFile( hFile, Buffer, Rest, (PDWORD)&amp;NumWritten, NULL ) ){
						OutputDebugStringW(L&quot;Write file broke inside rest&quot;);					 
					}
					delete[] Buffer;
				}
			}else{
				Buffer = new char[Size];
				std::fill(Buffer,Buffer+Size,0);
				if ( !WriteFile( hFile, Buffer, Size, (PDWORD)&amp;NumWritten, NULL ) ){
					OutputDebugStringW(L&quot;Write file broke inside small version&quot;);					 
				}
				delete[] Buffer;
			}
			FileName += L&quot; was safe deleted : Wide&quot;;
			OutputDebugStringW(FileName.c_str());
		}
		CloseHandle(hFile);
	}

	return Real_DeleteFileW(lpFileName);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1735749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735749</guid><dc:creator><![CDATA[Schurke]]></dc:creator><pubDate>Wed, 01 Jul 2009 21:26:59 GMT</pubDate></item><item><title><![CDATA[Reply to fstream und datein &amp;gt; 2^32 byte on Thu, 02 Jul 2009 05:38:47 GMT]]></title><description><![CDATA[<p>Schurke schrieb:</p>
<blockquote>
<pre><code class="language-cpp">File-&gt;seekg(std::ios::end);
		int Lenght = File-&gt;tellg();
</code></pre>
</blockquote>
<p>SideWinder schrieb:</p>
<blockquote>
<p>Vor allem weil dein seekg()-Aufruf afaik nichtmal standardisiert ist (ergo nicht die Dateigröße zurückgeben muss).</p>
</blockquote>
<p>Da muss ich mal ganz dumm nachfragen: Folgende Variante ist aber standardisiert und liefert 100%ig die Dateigröße (in Bytes)? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">std::fstream file(&quot;test.txt&quot;);
file.seekg(0, std::ios::end);   // Lesezeiger auf Dateiende setzten
size_t fileSize = file.tellg(); // Zeigerposition abrufen (Offset zu Dateianfang in Bytes)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1735798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735798</guid><dc:creator><![CDATA[Roger Wilco]]></dc:creator><pubDate>Thu, 02 Jul 2009 05:38:47 GMT</pubDate></item><item><title><![CDATA[Reply to fstream und datein &amp;gt; 2^32 byte on Thu, 02 Jul 2009 16:20:27 GMT]]></title><description><![CDATA[<p>Also ich bin gerade selbst auf den fehler gestoßen, ich habe vergessen den File pointer weiterzuverschieben, denn das wird aus bequemlichkeitsgründen bei den fstreams ja schon automatisch erledigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1736167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1736167</guid><dc:creator><![CDATA[Schurke]]></dc:creator><pubDate>Thu, 02 Jul 2009 16:20:27 GMT</pubDate></item></channel></rss>