Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабораторные Тимофеев / 3316_Кирейкова_Лабораторная1

.1.pdf
Скачиваний:
0
Добавлен:
01.06.2026
Размер:
1.07 Mб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра Вычислительной техники

ОТЧЕТ по лабораторной работе №1 (задание 1)

по дисциплине «Операционные системы»

ТЕМА: УПРАВЛЕНИЕ ФАЙЛОВОЙ СИСТЕМОЙ

Студент гр. 3316

 

Кирейкова С.А.

Преподаватель

 

Тимофеев А.В.

 

 

 

 

 

Санкт-Петербург

2025

Цель работы: исследовать управление файловой системой с помощью Win32 API.

Ход работы:

1. Проверка работоспособности программы:

Главное меню (рис. 1):

Рисунок 1

Получим список дисков (пункт 1) (рис. 2), окажемся в меню дисков:

Рисунок 2

Выберем диск под номером 1 (диск C:\) (меню дисков: пункт 2) (рис. 3):

Рисунок 3

Посмотрим информацию о диске (пункт 1) (рис. 4):

Рисунок 4

Посмотрим информацию о свободном пространстве на диске (пункт 2) (рис.5):

Рисунок 5

Вернемся в главное меню (меню дисков: пункт 1)(рис.6):

Рисунок 6

Создадим директорию «NewDirectory» (рис. 7) (пункт 6). Проверим, создала ли программа директорию (рис. 8)

Рисунок 7

Рисунок 8

Удалим созданную нами ранее директорию «NewDirectory» (пункт 3) (рис.9):

Рисунок 9

Директория «NewDirectory» действительно была удалена (рис.10):

Рисунок 10

Создадим новый файл «file.txt» (пункт 4) (рис.11):

Рисунок 11

Проверим появился ли созданный нами файл «file.txt» (рис.12):

Рисунок 12

Скопируем созданный нами ранее файл «file.txt» в файл «copy_of_file.txt» (пункт 5) (рис. 13):

Рисунок 13

И действительно, файл был успешно скопирован с помощью программы

(рис.14):

Рисунок 14

Переместим файл «file.txt» в «moved_file.txt» (пункт 6) (рис.15):

Рисунок 15

Убедимся, что файл был перемещен (рис.16):

Рисунок 16

Посмотрим атрибуты файла «moved_file.txt» (пункт 7) (рис. 17):

Рисунок 17

Изменим атрибуты файла «moved_file.txt», установим атрибут

«READONLY» (пункт 8) (рис. 18) и проверим установился ли новый атрибут

(рис.19):

Рисунок 18

Рисунок 19

Посмотрим расширенную информацию о файле «moved_file.txt» (пункт 9) (рис.20)

Рисунок 20

Посмотрим время создания, последнего доступа, последней записи файла

«moved_file.txt» (пункт 10) (рис. 21):

Рисунок 21

Изменим время последней записи на текущее (пункт 11) (рис. 22):

Рисунок 22

Видим, что время действительно было изменено на текущей и программа сработала корректно (рис. 23):

Рисунок 23

Вывод

В рамках выполнения лабораторной работы №1 была реализована консольная программа, использующая функции Win32 API для управления файловой системой. В процессе работы были изучены и применены базовые функции для создания, удаления, перемещения файлов и каталогов, а также получения информации об атрибутах и временных метках файлов. Все действия выполняются через системные вызовы Windows, что позволило глубже понять механизм работы с файлами на низком уровне. Программа выполняет поставленное задание корректно, работа алгоритма отображена на скриншотах.

Текст программы:

#define NOMINMAX #include <iostream> #include <windows.h> #include <locale.h> #include <limits> #include <vector> #include <string> #include <iomanip>

void clearInputBuffer() { std::cin.clear(); // сброс ошибки ввода

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // очистка буфера

}

std::wstring InputPath() { std::wstring path; std::getline(std::wcin, path);

std::wcout <<L"Вы ввели: "<< path << std::endl;

return path;

}

void showMainMenu() {

std::cout << "\n===== МЕНЮ =====\n"; std::cout << "1. Вывод списка дисков\n"; std::cout << "2. Создать новый каталог\n"; std::cout << "3. Удалить каталог\n"; std::cout << "4. Создать файл\n"; std::cout << "5. Скопировать файл\n"; std::cout << "6. Переместить файл\n";

std::cout << "7. Посмотреть атрибуты файла\n";

std::cout << "8. Установить атрибуты файла или каталога\n"; std::cout << "9. Посмотреть расширенную информацию о файле\n"; std::cout << "10. Посмотреть время создания, последнего доступа,

последней записи \n";

std::cout << "11. Заменить время последней записи на текущее\n"; std::cout << "0. Выход\n";

std::cout << "Введите ваш выбор: ";

}

int GetQuantityOfDrivers() {

DWORD bitMask = GetLogicalDrives();

int count = 0;

for (int i = 0; i < 26; ++i) {

if (bitMask & (1 << i)) { count++;

}

}

return count;

}

void ShowDriversMenu() {

int quantity = GetQuantityOfDrivers();

int* driversnunber = newint[quantity]; std::cout <<"\n===== МЕНЮ ДИСКОВ ===== \n"; std::cout << "1. Вернуться в главное меню\n";

for (int i = 0; i <= quantity; i++) {

std::cout << i + 1 << ". " << "Выбрать диск под номером " << ++i << std:: endl;

}