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

21 Авг 2019 в 06:31
214 +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 Апр 2024 в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир