Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (26.11.2011 в 22:24)
При определении размера файла, необходимо его открыть при помощи функции CreateFile(), а потом передать полученный дискриптор в функцию GetFileSize(). Эта функция возвращает количество байт в файле. Приведенный ниже пример, предполагает, что мы имеем дело с файлом, размер которого ниже 4Гб, в противном случае пришлось бы задействовать второй параметра функции GetFileSize() (который мы тут малодушно приравниваем NULL).
// Главный заголовочный файл
#include <Windows.h>
// Набор макросов
#include <WindowsX.h>
// Для printf
#include <stdio.h>

// Главная входная точка Windows-программ
int WINAPI WinMain(HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  LPSTR lpcmdline,
  int ncmdshow)
{
  // Размер файла
  DWORD dwSize = 0;
  char chSize[256];
  // Файл
  LPCTSTR lpszSystemInfo = "D:\\cover.jpg";
  // Открываем файл
  HANDLE hFile = CreateFile(lpszSystemInfo,
                            GENERIC_READ,
                            0,
                            NULL,
                            OPEN_EXISTING,
                            FILE_FLAG_SEQUENTIAL_SCAN,
                            NULL);
  if(hFile == INVALID_HANDLE_VALUE)
  {
    MessageBox(NULL, "Не удалось открыть файл",
      "Ошибка",
      MB_OK | MB_ICONEXCLAMATION);
  }
  // Получаем размер файла
  dwSize = GetFileSize(hFile, NULL);
  if (dwSize == INVALID_FILE_SIZE)
  {
    MessageBox(NULL, "Не удалось определить размер файла",
      "Ошибка",
      MB_OK | MB_ICONEXCLAMATION);
  }
  // Закрываем файл
  CloseHandle(hFile);
  // Преобразуем число в строку, чтобы вывести в модальном окне
  sprintf_s(chSize, 256, "%d", dwSize);
  // Выводим резальтат
  MessageBox(NULL, chSize,
    "Размер файла",
    MB_OK | MB_ICONEXCLAMATION);
  // Выход из программы
  return(0);
}


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: