- •Фгбо увпо «Воронежский государственный технический университет»
- •Программная реализация функций управления файловой системой эвм
- •Программная реализация функций управления файловой системой эвм
- •1.2. Содержание работы
- •1.3. Используемое оборудование и программные средства
- •2.1. Краткие теоретические сведения
- •Функции Win32 api получения информации о файлах и дисках
- •Функции получения информации о диске:
- •Функции получения информации о файлах и каталогах:
- •Распознавание типа диска
- •Информация о файловой системе
- •Получение текущей директории
- •Получение пути к файлу
- •Получение атрибутов файла
- •Получение размера файла
- •Поиск файла по маске
- •Управляющие функции файловой системы
- •Удаление файла
- •Копирование файла
- •Перенос/переименование файла
- •Чтение из файла
- •Запись в файл
- •Вспомогательные функции. Связь всех видов функций
- •3.1. Порядок выполнения лабораторной работы
- •3.2. Указания по оформлению отчета
- •Программная реализация функций управления файловой системой эвм
Получение текущей директории
Текущая директория отображается компонентой Edit1.
TEdit *Edit1;
DWORD dwCurDir;
char lpCurDir[255];
void main ()
{dwCurDir=255;if (dwCurDir>=GetCurrentDirectory(dwCurDir,lpCurDir))Edit1->Text=lpCurDir;}
Получение пути к файлу
Входное имя файла берется из свойства FileName компоненты OpenDialog1. Компонента Edit1 выводит полный путь к файлу вместе с именем, Edit2 - имя файла.
TEdit *Edit1; TEdit *Edit2; TOpenDialog *OpenDialog1; DWORD dwPath; char lpPath[255];//объявление указателя и выделение памяти для пути и имени файла char *ppszFilePart;//объявление указателя на имя файла (использует память, выделенную выше) void main () {dwPath=255; if (cchPath>=GetFullPathName(OpenDialog1->FileName.c_str(),dwPath,lpPath, &ppFilePart)) {Edit1->Text=lpPath;Edit2->Text=ppFilePart;}}
Получение атрибутов файла
Входное имя файла берется из свойства FileName компоненты OpenDialog1. Компоненты Label1 - Label7 выводят значения атрибутов файла.
TLabel *Label1; TLabel *Label2; TLabel *Label3; TLabel *Label4; TLabel *Label5; TLabel *Label6; TLabel *Label7; TOpenDialog *OpenDialog1; void main () { DWORD f_attrib; f_attrib=GetFileAttributes(OpenDialog1->FileName.c_str()); if (f_attrib!=0xffffffff) { if (f_attrib&FILE_ATTRIBUTE_NORMAL) Label1->Caption="без атрибутов"; if (f_attrib&FILE_ATTRIBUTE_SYSTEM) Label2->Caption="системный"; if (f_attrib&FILE_ATTRIBUTE_ARCHIVE) Label3->Caption="архивный"; if (f_attrib&FILE_ATTRIBUTE_HIDDEN) Label4->Caption="скрытый"; if (f_attrib&FILE_ATTRIBUTE_READONLY) Label5->Caption="только для чтения"; if (f_attrib&FILE_ATTRIBUTE_TEMPORARY) Label6->Caption="временный"; if (f_attrib&FILE_ATTRIBUTE_DIRECTORY) Label7->Caption="директория"; } }
Получение размера файла
Входное имя файла берется из свойства FileName компоненты OpenDialog1. Компонента Edit1 выводит размер файла.
TEdit *Edit1; TOpenDialog *OpenDialog1; HANDLE hFile; void main () { DWORD f_size; char fsize[25]; hFile=CreateFile(OpenDialog1->FileName.c_str(),NULL,NULL,NULL,OPEN_EXISTING,NULL,NULL); f_size=GetFileSize(hFile,NULL);if (f_size!=0xffffffff) Edit1->Text=ultoa(f_size,fsize,10); CloseHandle(hFile); }
Поиск файла по маске
Входное имя файла берется из свойства Text компоненты Edit1. Компонента ListBox1 выводит имена найденных файлов в полном формате, а ListBox2 - в формате 8.3.
TEdit *Edit1; TListBox *ListBox1; TListBox *ListBox2; WIN32_FIND_DATA lpffd; HANDLE hFile_find; { hFile_find=FindFirstFile(Edit1->Text.c_str(),&lpffd); if (hFile_find!=INVALID_HANDLE_VALUE) {ListBox1->Items->Append(lpffd.cFileName); ListBox2->Items->Append(lpffd.cAlternateFileName);} while (FindNextFile(hFile_find,&lpffd)) {ListBox1->Items->Append(lpffd.cFileName); ListBox2->Items->Append(lpffd.cAlternateFileName);} FindClose(hFile_find); }