diff --git a/main.c b/main.c index 70f059a..e4205d7 100644 --- a/main.c +++ b/main.c @@ -45,8 +45,8 @@ int getVolumeInformation() { long getFileSize(LPCSTR path) { printf("- GetFileSize:\n"); HANDLE hFile; - DWORD fileSize; - unsigned long structLargeInt; + unsigned long long high; + unsigned long long low; // Открытие файла hFile = CreateFile(path, GENERIC_READ, @@ -55,15 +55,20 @@ long getFileSize(LPCSTR path) { OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (hFile == INVALID_HANDLE_VALUE) { + printf("Не удалось открыть файл\n"); + CloseHandle(hFile); + return 1; + } // Получение размера файла - structLargeInt = GetFileSize(hFile, NULL); + low = GetFileSize(hFile, (LPDWORD) &high); // Закрытие файла CloseHandle(hFile); // Вывод размера файла - printf("Размер файла: %lu байт\n", structLargeInt); + printf("Размер файла: %llu\n", high << 32 | low); return 0; } int findNextFile() { @@ -114,6 +119,11 @@ int compareFileTime(LPCSTR path_1, LPCSTR path_2) { OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (file1 == INVALID_HANDLE_VALUE) { + printf("Не удалось открыть файл 1\n"); + CloseHandle(file1); + return 1; + } // время изменения первого файла GetFileTime(file1, NULL, NULL, &fileTime1); @@ -129,6 +139,11 @@ int compareFileTime(LPCSTR path_1, LPCSTR path_2) { OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (file2 == INVALID_HANDLE_VALUE) { + printf("Не удалось открыть файл 2\n"); + CloseHandle(file2); + return 1; + } // Получаем время изменения второго файла GetFileTime(file2, NULL, NULL, &fileTime2); @@ -178,31 +193,36 @@ int setLocalTime() { return 0; } -void getFileAttributes(LPCSTR path){ +int getFileAttributes(LPCSTR path){ DWORD fileAttributes = GetFileAttributes(path); + if (fileAttributes == INVALID_FILE_ATTRIBUTES) + { + printf("Ошибка открытия файла.\n"); + return 1; + } if (fileAttributes & FILE_ATTRIBUTE_READONLY) { printf("\n/Read-only"); } if (fileAttributes & FILE_ATTRIBUTE_HIDDEN) { printf("\n/Hidden"); } - if (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) { + if (fileAttributes & FILE_ATTRIBUTE_ARCHIVE) { printf("\n/Directory"); }// и так далее для других атрибутов файла... printf("\n"); } -int setFileAttributes(LPCSTR path) { +int setFileAttributes(LPCSTR path, DWORD dwFileAttributes) { printf("- SetFileAttributes:\n"); // Gуть к файлу // Сбрасываем атрибуты файла - SetFileAttributes(path, (DWORD) NULL); + SetFileAttributes(path, (DWORD) 0); // Текущие атрибуты файла printf("\tТекущие атрибуты файла ДО замены: "); getFileAttributes(path); // Устанавливаем атрибуты файла - DWORD newFileAttributes = FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY; + DWORD newFileAttributes = dwFileAttributes; BOOL result = SetFileAttributes( path, (DWORD) newFileAttributes); printf("\tТекущие атрибуты файла ПОСЛЕ замены: "); @@ -253,20 +273,28 @@ int createFile() { int main() { setlocale(LC_ALL, "Rus"); - printf("\n----------------------------\n"); + printf("\n----------------------------\n----------------------------\n----------------------------\n"); printf("\tИнформация о дисках:\n"); - getLogicalDriveStrings();// + получение букв дисков - getVolumeInformation();// + получение информации о файловой системе выбранного логического диска + // getLogicalDriveStrings();// + получение букв дисков + // getVolumeInformation();// + получение информации о файловой системе выбранного логического диска printf("\n------------------------------------------\n"); printf("\tИнформация о файлах и директориях:\n"); getFileSize("text.txt");// + получает размер файла - findNextFile();// + поиск следующего файла в месте поиска - getWindowsDirectory();// + путь к основному каталогу виндовс + getFileSize("texавпавпt.txt");// + получает размер файла + // findNextFile();// + поиск следующего файла в месте поиска + // getWindowsDirectory();// + путь к основному каталогу виндовс compareFileTime("text.txt", "text2.txt.");// + определение какой из файлов более новый printf("\n----------------------------\n"); printf("\tУправляющие функции:\n"); - setLocalTime();// + установить текущую дату и время - setFileAttributes("text3.txt");// + установка файловых атрибутов - createFile();// + создать/открыть файл - CopyFile("text.txt", "text3.txt", 0);// скопировать файл + // setLocalTime();// + установить текущую дату и время + printf("\tВведите нужный атрибут для установки файлу: 1 - только для чтения, 2 - скрытый, 3 - архивный\n"); + int chislo = 0; + scanf("%d", &chislo); + if (chislo == 1 || chislo == 2 || chislo == 3) + setFileAttributes("text3.txt", chislo);// + установка файловых атрибутов + else { + printf("Указан неверный номер атрибута\n"); + } + // createFile();// + создать/открыть файл + // CopyFile("text.txt", "text3.txt", 0);// скопировать файл } diff --git a/main.exe b/main.exe index 0985ba4..8a47060 100644 Binary files a/main.exe and b/main.exe differ