Fstream - rozmiar pliku
marcinEc
<keywords>fstream ifstream rozmiar pliku</keywords>
Pobranie długości pliku związanego ze strumieniem <font name="Courier New">fstream</span> (także <font name="Courier New">ifstream</span>) polega na przesunięciu wskaźnika odczytu (tzw. get pointer) na koniec pliku, w trybie binarnym, i odczytaniu tej pozycji:
#include < iostream >
#include < fstream >
using namespace std;
int main ()
{
int length;
fstream fs;
fs.open( "test.txt", ios::binary | ios::in );
if ( fs )
{
// przesun pozycje na koniec
fs.seekg( 0, ios::end );
// odczytaj pozycje w pliku -> rozmiar pliku
length = fs.tellg();
// wroc na poczatek pliku!
fs.seekg( 0, ios::beg );
// ...
cout << "Rozmiar pliku to: " << length << endl;
}
}
Można także użyć wskaźnika zapisu (put pointer) i skorzystać z metod <font name="Courier New">seekp()</span> oraz <font name="Courier New">tellp()</span> dla strumienia otwartego do zapisu, np. typu <font name="Courier New">ofstream</span>; należy tylko uważać, aby nie skasować zawartości pliku, gdyż domyślnie <font name="Courier New">ofstream</span> jest otwierany z flagą <font name="Courier New">ios::trunc</span>.
Happy coding!
A mnie się zawsze miliły kierunki w seeku :D... Thx.
to będzie działało tylko z plikami < 2 GB
żeby to zmienić, zmień deklarację int length na unsigned length
jak dla mnie to sztos !!!