Другие языки программирования и технологии
Определение размера файла в Borland C++
В общем, как через Borland C++ можно определить размер файла? Например, выбирается видеофайл и через MediaPlayer воспроизводится. Как определить размер этого файла?
Вот пример на win api:
Среди переменных указаны атрибуты, тебе только размер выдрать.
HANDLE FindFirstFile(LPCTSTR lpFileName, //имя файла (ов) который (е) ищем, можно
использовать маску (*,?)
LPWIN32_FIND_DATA lpFindFileData //структура которая будет содержит информацию о файле) ;
Если произошла ошибка, то функция вернет значение INVALID_HANDLE_VALUE, иначе handle
поиска.
Структура WIN32_FIND_DATA содержит следующие элементы:
dwFileAttributes – атрибуты файла (директории) :
FILE_ATTRIBUTE_ARCHIVE 0x00000020 файл или директория архивные
FILE_ATTRIBUTE_COMPRESSED 0x00000800 файл или директория сжаты
FILE_ATTRIBUTE_DIRECTORY 0x00000010 каталог
FILE_ATTRIBUTE_ENCRYPTED 0x00000040 файл или директория зашифрованы
FILE_ATTRIBUTE_HIDDEN 0x00000002 файл или директория скрыты
FILE_ATTRIBUTE_NORMAL 0x00000080 файл или директория без атрибутов
FILE_ATTRIBUTE_READONLY 0x00000001 только чтение
FILE_ATTRIBUTE_SYSTEM 0x00000004 файл или директория системные
FILE_ATTRIBUTE_TEMPORARY 0x00000100 файл или директория временные
ftCreationTime – время создания
ftLastAccessTime – время последнего открытия
ftLastWriteTime – время последнего изменения
nFileSizeLow – размер файла
cFileName – имя файла
Для продолжения поиска необходима функция FindNextFile:
BOOL FindNextFile( HANDLE hFindFile, //handle поиска
LPWIN32_FIND_DATA lpFindFileData //указатель на структуру с информацией о файле) ;
Если нет ошибок функция возвращает не нулевое значение. Для нахождения текущей директории
можно воспользоваться функцией GetCurrentDirectory:
DWORD GetCurrentDirectory(DWORD nBufferLength, //размер буфера
LPTSTR lpBuffer //указатель на буфер );
Теперь сам код, используется Visual C++ 6.0, создаем Win32 Console Application.
#include <iostream.h>
#include <windows.h>
int main()
{
WIN32_FIND_DATA winFileData;
HANDLE hFile;
char szPath[MAX_PATH];
if(GetCurrentDirectory(sizeof(szPath),szPath))
{
cout<
Среди переменных указаны атрибуты, тебе только размер выдрать.
HANDLE FindFirstFile(LPCTSTR lpFileName, //имя файла (ов) который (е) ищем, можно
использовать маску (*,?)
LPWIN32_FIND_DATA lpFindFileData //структура которая будет содержит информацию о файле) ;
Если произошла ошибка, то функция вернет значение INVALID_HANDLE_VALUE, иначе handle
поиска.
Структура WIN32_FIND_DATA содержит следующие элементы:
dwFileAttributes – атрибуты файла (директории) :
FILE_ATTRIBUTE_ARCHIVE 0x00000020 файл или директория архивные
FILE_ATTRIBUTE_COMPRESSED 0x00000800 файл или директория сжаты
FILE_ATTRIBUTE_DIRECTORY 0x00000010 каталог
FILE_ATTRIBUTE_ENCRYPTED 0x00000040 файл или директория зашифрованы
FILE_ATTRIBUTE_HIDDEN 0x00000002 файл или директория скрыты
FILE_ATTRIBUTE_NORMAL 0x00000080 файл или директория без атрибутов
FILE_ATTRIBUTE_READONLY 0x00000001 только чтение
FILE_ATTRIBUTE_SYSTEM 0x00000004 файл или директория системные
FILE_ATTRIBUTE_TEMPORARY 0x00000100 файл или директория временные
ftCreationTime – время создания
ftLastAccessTime – время последнего открытия
ftLastWriteTime – время последнего изменения
nFileSizeLow – размер файла
cFileName – имя файла
Для продолжения поиска необходима функция FindNextFile:
BOOL FindNextFile( HANDLE hFindFile, //handle поиска
LPWIN32_FIND_DATA lpFindFileData //указатель на структуру с информацией о файле) ;
Если нет ошибок функция возвращает не нулевое значение. Для нахождения текущей директории
можно воспользоваться функцией GetCurrentDirectory:
DWORD GetCurrentDirectory(DWORD nBufferLength, //размер буфера
LPTSTR lpBuffer //указатель на буфер );
Теперь сам код, используется Visual C++ 6.0, создаем Win32 Console Application.
#include <iostream.h>
#include <windows.h>
int main()
{
WIN32_FIND_DATA winFileData;
HANDLE hFile;
char szPath[MAX_PATH];
if(GetCurrentDirectory(sizeof(szPath),szPath))
{
cout<
Если файлы размером не более 2 гигабайт, то можно так:
long size;
ifstream in("name.ext",ios::binary);
in.seekg(0,ios::end);
size=in.tellg();
long size;
ifstream in("name.ext",ios::binary);
in.seekg(0,ios::end);
size=in.tellg();
в свойствах ищи - зачем C++? если надо в С++ -просто скачивай файл в массив - определяй размер массива. или посимвольно считывай его, пока не достигнешь конец файла - включишь счетчик считанных символов - узнаешь размер
Имелась такая же ошибка, исправил за минуту с помощью этого:


Похожие вопросы
- Borland C. Чтение файла с помощью прерываний
- Borland_C++
- Компиляция в Borland c++
- (Borland C++) Неизвестно откуда берет значение. Помогите, кто знает. Заранее спасибо!
- Стоит ли учить Borland C++ Builder 6
- Народ какая разница между borland c++ и visual c++
- Как научиться программировать на C++ с нуля, имея под рукой среду разработки Borland C++ Builder 6.0
- Как увелчить размер файла подкачки виртуальной памяти?
- Проблемы с кодировкой в компиляторе Borland C++ Builder
- Почему программа не компилируется в Borland C++ Builder?
int main()
{
WIN32_FIND_DATA winFileData;
HANDLE hFile;
char szPath[MAX_PATH];
if(GetCurrentDirectory(sizeof(szPath),szPath))
{
cout