Изучение функций (средств) Win32 API для работы с файлами и каталогами: Методические рекомендации по выполнению лабораторной работы

Страницы работы

Содержание работы

ФУНКЦИИ  WIN32  API  ДЛЯ  РАБОТЫ  С  ФАЙЛАМИ  И  КАТАЛОГАМИ

Лабораторная  работа   № 4

1.  ЦЕЛЬ  РАБОТЫ

Изучение функций (средств) Win32 API для работы с файлами и каталогами и приобретение практических навыков их использования в программах.

2.  ОСНОВНЫЕ  СВЕДЕНИЯ

2.1.  Файловые системы ОС WindowsNT.

Файловая система (ФС) – это часть программного обеспечения, в которую входят:

-  Совокупность всех файлов вычислительной системы;

-  Структуры данных для управления файлами, такие как каталоги, таблицы распределения свободного и занятого пространства на диске и др.;

-  Системные программы,  выполняющие такие операции над файлами, как создание, уничтожение,  чтение, запись, поиск, ограничение доступа.

Файловая система ОС обеспечивает программисту возможность работать с такими средствами, как логический диск, каталог, файл. Программист при этом не имеет дело с деталями расположения файлов на диске,  номерами поверхности, цилиндра и сектора на диске,  буферизацией данных.

Различные файловые системы различаются между собой способами записи файлов на носители информации, но используют одни и те же методы доступа к файлам на диске и работы с файлами.

Языки высокого уровня имеют разнообразные гибкие средства (операторы, функции и др.) для работы с файловой системой. В языках С и С++ файл рассматривается как поток (stream), представляющий собой последовательность считываемых или записываемых байтов. Расшифровку смысла последовательностей байтов должна выполнять программа. Классический подход в языке С состоит в том, что информация о файле заносится в структуру типа  FILE, определенную в файле stdio.h. При этом файл открывается с помощью функции fopen, возвращающей указатель на структуру типа FILE. Этот указатель используется в операциях с файлами. В С++ определены три класса файлового ввода/вывода ifstream, ofstream, fstream, для операций с файлами используются методы этих классов, в том числе очень удобные операции поместить в поток (<<) и взять из потока (>>).

WindowsNT/2000 поддерживает следующие файловые системы:

§  FAT (File Allocation Table) – применяется в MS-DOS, в Windows расширена до FAT32.

§  NTFS (New Technology File System) – основная файловая система Windows NT, обеспечивающая поддержку больших файлов и дисков большой емкости, высокую скорость операций обмена с дисками, высокую устойчивость к отказам и восстанавливаемость.

§  HPFS (High Performance File System) – высокопроизводительная файловая система, разработанная для ОС OS/2, более высокопроизводительная и устойчивая к отказам по сравнению с FAT – системой.

Все эти файловые системы являются иерархическими. На каждом диске создается корневой каталог (директория), который может включать в себя файлы и другие каталоги.

Для использования в Windows NT файловых систем NTFS или HPFS их следует установить, так как они не включены в ядро ОС и должны дополнительно инсталлироваться. Накопитель на жестком диске с помощью программы Disk Administrator (Диспетчер диска)

разделяется на логические диски, на  которых могут устанавливаться разные файловые системы.

2.2.  Функции Win32 APIдля работы с каталогами и файлами.

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

·  Функция GetCurrentDirectory возвращает имя текущего каталога.  Её синтаксис
DWORDGetCurrentDirectory(DWORD nBufferLengthLPSTR   lpBuffer);
Параметры
nBufferLength  - определяет длину буфера в байтах для возвращаемой строки с именем каталога,
lpBuffer -  указатель на буфер, в который помещается имя текущей директории.

Если функция выполнилась успешно, то возвращаемое значение определяет количество символов, переданное в буфер без учета нуль-терминатора. В случае ошибки возвращаемое значение – нуль. Для получения информации об ошибке можно вызвать функцию  DWORD GetLastError(VOID).

·  Функция CreateDirectory создает новую директорию. Её синтаксис:
BOOLCreateDirectory(LPCTSTR  lpPathName,    LPSECURITY_ATTRIBUTES 
lpSecurityAttributes);
        Параметры:
  lpPathName  - указатель на оканчивающуюся нуль-терминатором строку, содержащую путь создаваемой директории,
 lpSecurityAttributes  - указатель на структуру LPSECURITY_ATTRIBUTES, определяющую дескриптор безопасности при создании директории.  Если lpSecurityAttributes = NULL, то при создании директория получает дескриптор безопасности по умолчанию. Windows 95/98 игнорирует данный параметр. Справочные сведения по данной структуре можно получить в HELP Windows API.

·  Функция  RemoveDirectory удаляет существующую пустую директорию. Синтаксис:
BOOLRemoveDirectory(LPCTSTR  lpPathName);
Параметр
lpPathName – указатель на заканчивающуюся нулем строку, которая определяет имя удаляемой директории.  Директория должна быть пустой и вызывающая программа должна иметь доступ для удаления директории. Если функция выполнилась с ошибкой, то возвращается нулевое значение, без ошибки – отличное от нуля.

·  Функция CopyFile копирует существующий файл в новый. Синтаксис:
       BOOLCopyFile(LPCTSTR   lpExistingFileNameLPCTSTR  lpNewFileName,
BOOL  bFaillfExist);
       При нормальном завершении функция возвращает ненулевое значение, в случае ошибки – нуль.    Параметры функции:
lpExistingFileName– указатель на строку, определяющую имя файла – источника,
lpNewFileName  -  указатель на строку с именем нового файла,
bFaillfExist-  если принимает значение TRUE и новый файл уже существует, то функция завершается с ошибкой; если этот параметр равен FALSE, и новый  файл существует, то функция перезаписывает его и завершается нормально.
В Windows NT имеется также новая функция CopyFileEx(), которая имеет дополнительные параметры по сравнению с  CopyFile().

·  Функция DeleteFile удаляет существующий файл. Её синтаксис:
    BOOLDeleteFile(LPCTSTR   lpFileName);
Единственный параметр функции –указатель на строку с именем удаляемого файла.

·  Функция MoveFile перемещает или переименовывает существующий файл. Операции переименования и перемещения  файла по сути очень сходны, так как даже при перемещении с прежним именем у файла изменяется путь (полное имя).   Синтаксис:

 BOOLMoveFile(LPCTSTR  lpExistingFileNameLPCTSTR  lpNewFileName);
первый параметр – адрес имени имени существующего файла или каталога, второй – адрес нового имени файла. При успешном выполнении функция возвращает TRUE.
Сходная функция MoveFileEx() имеет дополнительный параметр – флаг, который управляет особенностями перемещения файла.

В Приложении 1 приведена программа, в которой демонстрируются  вышеприведенные функции.

2.3.  Функции Win32  API для записи информации в файл и чтения из файла

Похожие материалы

Информация о работе