Получить handle и размер файла С++? Здравствуйте.
Пишу программу на С++, программа рекурсивно ищет файлы на дисках.
Как мне реализовать следующее:
Получить handle файла, размер файла и выделить память для найденных файлов.
Всё это надо выполнить в цикле do - while.
Помогите пожалуйста разобраться.

21 Авг 2019 в 06:31
192 +1
0
Ответы
1

Для получения handle файла в C++ вы можете использовать функцию CreateFile из библиотеки Windows API. Пример кода для получения handle файла выглядит следующим образом:

#include <Windows.h>
#include <iostream>
int main() {
HANDLE hFile = CreateFile("C:\\path\\to\\file.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
std::cout << "Failed to open file" << std::endl;
return 1;
}
// Теперь у вас есть handle файла hFile, вы можете использовать его в других функциях Windows API
// Закрытие handle
CloseHandle(hFile);
return 0;
}

Для получения размера файла вы можете использовать функцию GetFileSizeEx из библиотеки Windows API. Пример кода:

#include <Windows.h>
#include <iostream>
int main() {
HANDLE hFile = CreateFile("C:\\path\\to\\file.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
std::cout << "Failed to open file" << std::endl;
return 1;
}
LARGE_INTEGER fileSize;
if (!GetFileSizeEx(hFile, &fileSize)) {
std::cout << "Failed to get file size" << std::endl;
return 1;
}
std::cout << "File size: " << fileSize.QuadPart << " bytes" << std::endl;
CloseHandle(hFile);
return 0;
}

Чтобы выделить память для найденных файлов, вы можете использовать оператор new для выделения динамической памяти. Пример кода:

#include <iostream>
int main() {
// Выделение памяти для хранения 100 файлов
int numFiles = 100;
int* fileSizes = new int[numFiles];
// Производим работу с файлами и записываем их размеры в массив fileSizes
// Удаление массива после использования
delete[] fileSizes;
return 0;
}

Надеюсь, эти примеры помогут вам реализовать необходимый функционал в вашей программе на C++. Успехов вам!

20 Апр в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 94 956 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир