Получение размера файла в C++

Категория: C / C++ Комментариев: 3

Нужно было мне написать кое-какую программу, пишущую результаты своей работы в файл. НО. Нужно было не допустить, чтобы файл оказался размером больше, чем 100Кб.
Как я решил эту проблему:
1. Открываем файл на добавление данных;
2. Получаем текущий размер файла;
3. Сравниваем максимально допустимый размер с текущим + размер записываемых данных;
4. Переоткрываем файл на перезапись;
5. Записываем данные;
6. Закрываем файл.

В целом всё элементарно за исключением шага №2, получения размера файла. Благо пришедший на помощь волшебник Гугл подсказал аж несколько вариантов получения размера файла. Я выбрал функцию filesize из заголовочного файла io.h, принимающая в качестве входного параметра дескриптор открытого файла и отдающая на выходе размер файла в байтах:

#include <iostream>
#include <io.h>
#include <tchar.h>
int _tmain(int argc, _TCHAR* argv[])
{
	FILE *f;
	char * filename = "file.txt";
	char * data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
	int maxsize = 1024 * 100;
	f = fopen(filename,"a");
	int size = filelength(fileno(f));
	if ((size + strlen(data)) > maxsize){
		fclose(f);
		f = fopen(filename,"w");
	}
	fputs(data, f);
	fclose(f);
	return 0;
}
Автор: Кто-то   @   25 мая 2010 Комментариев: 3
Метки :

Поблагодарить автора

Webmoney Z163628999150, R617151845974

Комментариев: 3

Комментарии
июня 15, 2010
1:20

Это не получение размера файла в C++. Скорее это С. В C++ используются классы ifstream/ofstream для работы с файлами. :)

p.s:

_tmain — это ужасно :)

Дек 24, 2010
23:43
#2 винда :

>int _tmain (int argc, _TCHAR* argv[])

фуууу, винда...

Автор Дек 27, 2010
13:42

ой, спалился :oops:

оставить комментарий

Предыдущая запись
«
Следующая запись
»