Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция, возвращающая размер файла 
:(
    Опции темы
Strelok
Дата 28.11.2003, 16:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть ли в Си++ функция, которая возвращает размер файла в байтах?
Я программирую в C++ Builder 6.0
Сам написал функцию, ей передается имя файла, она возвращает его размер:

int size (char *F)
{
ifstream f;
char c;
int k=-1;
f.open(F);
while (!f.eof()) { f.get©; k++; }
f.close();
return k;
}

Во-первых размер файла она определяет медленно.
Во-вторых: почему-то когда она встречает символ шестнадцатеричный код которого 1A, то прекращает работу, и размер файла определяется только до этого символа.
Подскажите пожалуйста такую функцию.
Заранее спасибо!
  Вверх
gray_k
Дата 28.11.2003, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1015
Регистрация: 9.1.2003
Где: Москва

Репутация: нет
Всего: 22



Код

//определяем размер файла
int FileSize(AnsiString FileName)
{
       HANDLE hFile;
       DWORD lcFileSize;
       hFile = CreateFile(FileName.c_str(), GENERIC_READ, 0, 0, OPEN_EXISTING,
                   FILE_ATTRIBUTE_NORMAL, 0);
       lcFileSize = GetFileSize(hFile, 0);
       CloseHandle(hFile);
       return lcFileSize;
}



--------------------
С уважением.
Gray.
PM MAIL   Вверх
Madest
Дата 28.11.2003, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 27.11.2003
Где: Городок

Репутация: нет
Всего: нет



Ещё так:
BOOL GetFileSizeEx
(
HANDLE hFile,//дескриптор
PLARGE_INTEGER lpFileSize//размер
);
Дескриптор файла должен иметь доступ на запись или на чтение
lpFileSize - указатель на структуру LARGE_INTEGER

typedef union _LARGE_INTEGER
{
struct
{
DWORD LowPart;//младшие 32 бита
LONG HighPart;//старшие 32
};
LONGLONG QuardPart;
} LARGE_INTEGER,*PLARGE_INTEGER;
--------------------
PM MAIL   Вверх
Waters
Дата 28.11.2003, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.11.2003

Репутация: нет
Всего: нет



Ну и еще до кучи:

Код
long b_filesize(const char *file)
{
 long int s;
 FILE *pf;
 pf=fopen(file,"rb");
 if(pf==NULL)
   return -1;
 fseek(pf, 0, SEEK_END);
 s=ftell(pf);
 fclose(pf);
 return s;
}


вариант устаревший, но переносимый.

wbr.
PM MAIL   Вверх
Step
Дата 28.11.2003, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



и это все будет завтра в факю


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
SCHEPA
Дата 29.11.2003, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 7.6.2003
Где: Н.Н.

Репутация: нет
Всего: нет



А вот так:
Код

long fsize;
FILE *o = fopen( "file", "rb" );
fsize = filelength(fileno(o));
fclose(o);

--------------------
Так что в лучших книгах всегда нет имен...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3136 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.