Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/99: Рейтинг темы: голосов - 99, средняя оценка - 4.68
 Аватар для Jnis
13 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 70

Размер файла

19.07.2009, 23:23. Показов 21405. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется узнать размер файла. Думаете все так легко? фаел может весить более 5гг! Кто какие идеи предложит?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.07.2009, 23:23
Ответы с готовыми решениями:

ListView, как отобразить имя файла и размер файла?
Подскажите, как в ListView отобразить имя файла и размер файла. используя DirectoryListBox1 ????????? Т.е. поле - имя файла и поле размер...

Размер файла
При поиске файла с определённым расширением, размер файла записываем в переменную: if (FindFirst(path + "*.mp3", faAnyFile,...

Размер исполняемого файла!
Здраствуйте! Мне надо: Показать размер исполняемого файла. Предусмотреть что имя (ехе) файла может меняться! Подскажите...

39
 Аватар для Jnis
13 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 70
21.07.2009, 01:52  [ТС]
Студворк — интернет-сервис помощи студентам
__beginner__, да, чет я не подумал к обычному ftell i64 добавить (%, а на щет int вон сколько умных людей тя поправлять стало), только не подскажешь в какой библе _ftelli64 лежит?
я вот только не понимаю зачем создатели си к "__int64" целых 2 лишних поджопника добавили, не оч удобно...
на счет TFileStream, хз, я люблю примитивным и быстрым кодом писать, для оптимизации, хотя кому оно в наше время нужно , но тк у мну комп не вери фаст, поэтому стремлюсь к оптимизации.

Читающим эту тему такой вопрос на засыпку: гдето тут же на этом форуме читал, что fopen открывает только текстообразные файлы. Так вот, смогу ли я используя fopen и fread прочитать например *.iso или *.rar, передать его по частям по сети и там собрать? В теории все работает, но после прочтения поста о fopen чет страшно писАть стало :-) тк прочтет ли комбинация fopen+fread файл нормально?
0
11 / 11 / 2
Регистрация: 18.07.2009
Сообщений: 123
21.07.2009, 10:31
_ftelli64 в stdio.h лежит
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
21.07.2009, 13:00
прочтет ли комбинация fopen+fread файл нормально?
Прочтет нормально.
Хотя возможно будут проблемы с файлами >2Gb.
0
 Аватар для Jnis
13 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 70
21.07.2009, 13:47  [ТС]
Гавнянство :-( у меня в 6 билдере _ftelli64 в stdio.h не лежит :-( __beginner__ у тя какой билд?
и _fseeki64 там нет :-( пока поищу 9 билд
0
11 / 11 / 2
Регистрация: 18.07.2009
Сообщений: 123
21.07.2009, 13:50
у меня вообще не билд)
0
 Аватар для Jnis
13 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 70
21.07.2009, 16:54  [ТС]
Опаньки :-D ну все равно надеюсь что в 9 уже норм все скомплектовали.

Добавлено через 2 часа 51 минуту 49 секунд
Не кто не по советует ссылочку где можно скачать нормальный 9 билдер? а то нашел, но там или баги какието или еще что...
0
4 / 4 / 1
Регистрация: 15.04.2010
Сообщений: 134
11.11.2010, 20:02
Ребята подскажите как мне можно узнать Ссилку размещения Файла

Добавлено через 48 минут
По подробней:
Я написал программу Фильмотеке, использовал базу данних Аксес, но проблема в том что нужно Папку кидать на другой комт туда же как она била создана в даной папке и з даним путем бази данних Аксес, Меня интересует как можно узнать путь фала Аксес.
Можно былобы задавать путь через OpenDialog но ето мне не кчему!!!!!
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
12.11.2010, 11:59
Цитата Сообщение от lebid Посмотреть сообщение
Меня интересует как можно узнать путь фала Аксес.
Странный какой-то вопрос. Положите файл БД рядом с проектом и не морочьте себе голову.
Если БД должна хранится в другом месте и отсутствует при запуске программы организуйте вывод на экран предупреждения и диалога для выбора файла.
0
4 / 4 / 1
Регистрация: 15.04.2010
Сообщений: 134
12.11.2010, 14:53
MikeSoft, Это я знаю, Мне интересно можно ли узнать Ссылку размещения этого файла
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
12.11.2010, 15:00
lebid, какую ссылку?
В Windows есть ярлыки.
Если речь идёт о ярлыках, то рекомендую посмотреть в сторону интерфейса IShellLink.
0
4 / 4 / 1
Регистрация: 15.04.2010
Сообщений: 134
12.11.2010, 15:25
MikeSoft, У меня есть файл db1.mdb
И нужно узнать его ссылку розмещения
например
D:\Новая папка

Добавлено через 12 секунд
Но только через код
0
11 / 11 / 2
Регистрация: 18.07.2009
Сообщений: 123
12.11.2010, 18:58
Цитата Сообщение от Jnis Посмотреть сообщение
Требуется узнать размер файла. Думаете все так легко? фаел может весить более 5гг! Кто какие идеи предложит?
задача вообще нерешаемая
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    /**
     * @brief Получаем размер файла.
     *
     * @return __int64  Размер файла.
     */
    __int64 CFileEx::GetFileSize()
    {
        __int64 qwOldOffset = GetSeek();
        SeekToEnd();
        __int64 qwFileSize = GetSeek();
        Seek(qwOldOffset, SEEK_SET);
        return qwFileSize;
    }
где есть
C++
1
2
3
4
5
6
7
8
9
    /**
     * @brief Возвращаем текущее смещение.
     *
     * @return __int64  Величина текущего смещения.
     */
    __int64 CFileEx::GetSeek()
    {
        return _ftelli64(m_pFile);
    }
и
C++
1
2
3
4
5
6
7
8
9
    /**
     * @brief Cмещаемся в конец файла.
     *
     * @return bool  Резульатат выполнения операции.
     */
    bool CFileEx::SeekToEnd()
    {
        return _fseeki64(m_pFile, 0, SEEK_END) == 0;
    }
т.е. иными словами, все почти так же, как и было в моем предыдущем посте, т.е.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
        /**
     * @brief Получаем размер файла.
     *
     * @return __int64  Размер файла.
     */
    __int64 CFileEx::GetFileSize()
    {
        __int64 qwOldOffset = _ftelli64(m_pFile);
        _fseeki64(m_pFile, 0, SEEK_END);
        __int64 qwFileSize = _ftelli64(m_pFile);
        _fseeki64(m_pFile, 0, SEEK_END);
        return qwFileSize;
    }
Хоп, и все!

а оказывается и в предыдущем посте я тоже писал про возможный > 4гб размер файла..
0
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
12.11.2010, 19:06
Мне лично понравился этот вариант Размер файла

Вот кое что от себя добавил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//---------------------------------------------------------------------------
AnsiString FileSize(AnsiString file)
{
// подключить #include <sys\stat.h>
// Edit1->Text = FileSize("D:\\Games\\Call_of_Duty_5_World_at_War.rar")
// 5,62 ГБ (6 031 587 343 байт)
    struct stati64 mbuf;
    _stati64(file.c_str(), &mbuf);
    file = mbuf.st_size;
    INT64 FS = mbuf.st_size;
    if(FS > 1024)
    {
        if(FS/1024 > 1024)
        {
            if(FS/1024/1024 > 1024)
            {
                float GB = FS/1024/1024/1024;
                file = FloatToStrF(GB+((FS-(GB*1024*1024*1024))/1024/1024/1024),ffNumber,100,2)+" ГБ ("+FloatToStrF(file.ToDouble(),ffNumber,100,0)+" байт)";
            }
            else
            {
                float MB = FS/1024/1024;
                file = FloatToStrF(MB+((FS-(MB*1024*1024))/1024/1024),ffNumber,100,2)+" МБ ("+FloatToStrF(file.ToDouble(),ffNumber,100,0)+" байт)";
            }
        }
        else
        {
            float KB = FS/1024;
            file = FloatToStrF(KB+((FS-(KB*1024))/1024),ffNumber,100,2)+" КБ ("+FloatToStrF(file.ToDouble(),ffNumber,100,0)+" байт)";
        }
    }
    else
    {
        file = FloatToStrF(file.ToDouble(),ffNumber,100,0) + " байт";
    }
    return file;
}
//---------------------------------------------------------------------------
2
11 / 11 / 2
Регистрация: 18.07.2009
Сообщений: 123
12.11.2010, 19:15
Gremlin, по-моему это вообще жесть и тут жесткая привязка к билдеру, не все же на нем пишут, кто-то под линуксом сидит, кто-то еще где )
0
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
12.11.2010, 19:20
__beginner__, я с тобой полностью согласен, что это не кроссплатформенный вариант, но эта ветка...
Форум программистов и сисадминов > Форум программистов > C/C++ > C++ Builder

Просто выложил, может кому и пригодится... я например час голову ломал чтоб к такому виду привести
0
11 / 11 / 2
Регистрация: 18.07.2009
Сообщений: 123
12.11.2010, 19:24
Gremlin, виноват, не заметил ) просто первый раз ответил в этой теме года полтора назад, вот и забыл где тема лежит, да и что вообще за тема )
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
12.11.2010, 19:26
Цитата Сообщение от lebid Посмотреть сообщение
MikeSoft, У меня есть файл db1.mdb
И нужно узнать его ссылку розмещения
Нет в Windows'е ссылок.
Если нужно выполнить поиск по каталогам для того, чтобы получить полный путь к файлу, советую посмотреть эту тему: Поиск файлов определенного формата в папке, и во всех вложенных
0
27 / 20 / 1
Регистрация: 26.02.2013
Сообщений: 135
21.09.2013, 19:22
На 5 ГБ не проверял, но на более маленьких работает нормально:


C++
1
2
3
4
5
AnsiString ASFileName=GetCurrentDir()+"\\MyTextFile.txt";
FILE* f=fopen(ASFileName.c_str(),"rb");
  if (f)
  {ShowMessage(sizeof(*f));}
fclose(f);
Добавлено через 8 часов 18 минут
Вру,
Просто у меня в файле в файле три переменные char. Вот он и выдал мне 24. Блин, надо же такое совпадение.
0
0 / 0 / 1
Регистрация: 11.02.2018
Сообщений: 133
17.01.2019, 08:11
Otaka, как указать размер файла, но в компоненте Edit?

Добавлено через 5 минут
Otaka,

ваш код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
__int64 GetBigFileSize(char*path)
{
HANDLE h=CreateFile(path,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
if(h!=NULL)
        {
        ULONG sizel=0;
        ULONG sizeh=0;
        sizel=GetFileSize(h,&sizeh);
        __int64 result=sizeh;
        result=result<<32;
        result=result|sizel;
        CloseHandle(h);
        return result;
        }else
        {
        return -1;
        }
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage(IntToStr(GetBigFileSize("F:\\Games\\ДИСКИ\kotor\\KotOR\\KotOR.mdf")));
}
//---------------------------------------------------------------------------
как указать размер файла в компоненте edit?
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
17.01.2019, 08:42
Muriam,
C++
1
Edit1->Text = IntToStr(GetBigFileSize("F:\\Games\\ДИСКИ\kotor\\KotOR\\KotOR.mdf"));
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.01.2019, 08:42
Помогаю со студенческими работами здесь

Размер файла на Windows 7?
Привет всем.:) у меня уже кубышка не работает. уже сколько вариантов перепробовал и зашел в тупик. в момент загрузки файла из интернет...

Размер файла у FILE
Как узнать размер файла, например в таком коде ... FILE *MyFile = fopen(&quot;file.txt&quot;,&quot;r&quot;); ... Заранее спасибо. Есть подозрения...

Большой размер исполняемого файла
Пишу простую программу в с++ Builder XE4. Сначала созданная программа весит 300-400Кб. Но если сделать так, что бы программа работала на...

Узнать размер bmp файла в миллиметрах
Код рабочий, но высота маленькая получается порядка 1 мм, где ошибка у меня? int W =...

Размер файла apk слишком большой
Скомпилировал на C++ Builder XE6 самое простое приложение под Андроид и оно получилось 4 мегабайта... Какое-то оно слишком большое....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru