Форум: Форум C++Разное
Новые темы: 00
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Windows API: размер файла
 
 автор: 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);
}

  Ответить  
 
 автор: cheops   (26.11.2011 в 22:30)   письмо автору
 
   для: cheops   (26.11.2011 в 22:24)
 

Консольный вариант этой же самой программы может выглядеть следующим образом
#include <Windows.h>
#include <WindowsX.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main ()
{
  // Размер файла
  DWORD dwSize = 0;
  // Файл
  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)
    cerr << "Не удалось открыть файл" << endl;
  // Получаем размер файла
  dwSize = GetFileSize(hFile, NULL);
  if (dwSize == INVALID_FILE_SIZE)
    cerr << "Не удалось определить размер файла" << endl;
  // Закрываем файл
  CloseHandle(hFile);
  // Выводим результат
  cout << "Размер файла " << lpszSystemInfo << " = " << dwSize << endl;

  // Остановка перед закрытием окна
  system("PAUSE");

  return 0;
}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования