Programowanie w języku C/C++ » FAQ

Fstream - rozmiar pliku

  • 2006-02-16 19:10
  • 3 komentarze
  • 3879 odsłon
  • Oceń ten tekst jako pierwszy
<keywords>fstream ifstream rozmiar pliku</keywords>

Pobranie długości pliku związanego ze strumieniem fstream (także ifstream) 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 seekp() oraz tellp() dla strumienia otwartego do zapisu, np. typu ofstream; należy tylko uważać, aby nie skasować zawartości pliku, gdyż domyślnie ofstream jest otwierany z flagą ios::trunc.

Happy coding!

3 komentarze

Future Knight 2009-06-26 15:57

A mnie się zawsze miliły kierunki w seeku :D... Thx.

CriSIX 2006-07-05 22:26

to będzie działało tylko z plikami < 2 GB
żeby to zmienić, zmień deklarację int length na unsigned length

bleekm 2005-11-24 16:24

jak dla mnie to sztos !!!