- •Фгбо увпо «Воронежский государственный технический университет»
- •Программная реализация функций управления файловой системой эвм
- •Программная реализация функций управления файловой системой эвм
- •1.2. Содержание работы
- •1.3. Используемое оборудование и программные средства
- •2.1. Краткие теоретические сведения
- •Функции Win32 api получения информации о файлах и дисках
- •Функции получения информации о диске:
- •Функции получения информации о файлах и каталогах:
- •Распознавание типа диска
- •Информация о файловой системе
- •Получение текущей директории
- •Получение пути к файлу
- •Получение атрибутов файла
- •Получение размера файла
- •Поиск файла по маске
- •Управляющие функции файловой системы
- •Удаление файла
- •Копирование файла
- •Перенос/переименование файла
- •Чтение из файла
- •Запись в файл
- •Вспомогательные функции. Связь всех видов функций
- •3.1. Порядок выполнения лабораторной работы
- •3.2. Указания по оформлению отчета
- •Программная реализация функций управления файловой системой эвм
Удаление файла
Имя удаляемого файла берется из свойства FileName компоненты OpenDialog1. При ошибке выводится сообщение.
TOpenDialog *OpenDialog1; void main() {if (!DeleteFile(OpenDialog1->FileName.c_str())) MessageBox(NULL,"Ошибка удаления файла!!!","Сообщение",MB_OK);}
Копирование файла
Имя исходного файла берется из свойства Text компоненты Edit1. Имя нового файла берется из свойства Text компоненты Edit2. Если файл с именем Edit2 уже существует - копирование не происходит.
TEdit *Edit1; TEdit *Edit2; void main() {if (!CopyFile(Edit1->Text.c_str(),Edit2->Text.c_str(),true)) MessageBox(NULL,"Ошибка копирования файла!!!","Сообщение",MB_OK);}
Перенос/переименование файла
Имя исходного файла берется из свойства Text компоненты Edit1. Новое имя файла берется из свойства Text компоненты Edit2. При ошибке выводится сообщение.
TEdit *Edit1; TEdit *Edit2; void main() {if (!MoveFile(Edit1->Text.c_str(),Edit2->Text.c_str())) MessageBox(NULL,"Ошибка переименования/перемещения файла!!!","Сообщение",MB_OK);}
Чтение из файла
Имя считываемого файла берется из свойства Text компоненты Edit1. Компонентой Edit2 выводятся первые 6 байт файла в шестнадцатиричном формате.
TEdit *Edit1; TEdit *Edit2; void main() { HANDLE hFile; DWORD lpNumberOfBytesRead; unsigned char num[6]; char chper[25]; hFile=CreateFile(Edit1->Text.c_str(),GENERIC_READ,NULL,NULL,OPEN_EXISTING,NULL,NULL); if (hFile==INVALID_HANDLE_VALUE) MessageBox(NULL,"Ошибка открытия файла!!!","Сообщение",MB_OK); else if (!ReadFile(hFile,num,6,&lpNumberOfBytesRead,NULL)) MessageBox(NULL,"Ошибка чтения из файла!!!","Сообщение",MB_OK); else for (int i=0;i<6&&i<lpNumberOfBytesRead;++i) - Edit2->Text=Edit2->Text+CharUpper(itoa((int)num[i],chper,16))+"h "; CloseHandle(hFile); }
Запись в файл
Имя файла для записи берется из свойства Text компоненты Edit1. В начало файла записываются значения 1, 2, 3 , 4, 5.
TEdit *Edit1; HANDLE hFile; DWORD lpNumberOfBytesWrite; char num[]={0,1,2,3,4,5}; void main() { hFile=CreateFile(Edit1->Text.c_str(),GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,NULL,NULL); if (hFile==INVALID_HANDLE_VALUE) MessageBox(NULL,"Ошибка открытия файла!!!","Сообщение",MB_OK); else if (!WriteFile(hFile,num,6,&lpNumberOfBytesWrite,NULL)) MessageBox(NULL,"Ошибка записи в файл!!!","Сообщение",MB_OK); - else MessageBox(NULL,"Запись произведена успешно!!!","Сообщение",MB_OK); CloseHandle(hFile); }
Следует отметить, что операция считывания данных из файла занимает промежуточное положение между информационными и управляющими. С одной стороны она является информационной, так как предоставляет информацию о качественном содержании файла. С другой - управляющей, так как ведет к перемещению указателя на элемент файла.