ФУНКЦИИ WIN32 API ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ
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 nBufferLength,
LPSTR 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 lpExistingFileName, LPCTSTR lpNewFileName,
BOOL bFaillfExist);
При нормальном завершении функция возвращает ненулевое значение, в
случае ошибки – нуль. Параметры функции:
lpExistingFileName–
указатель на строку, определяющую имя файла – источника,
lpNewFileName - указатель
на строку с именем нового файла,
bFaillfExist-
если принимает значение TRUE и
новый файл уже существует, то функция завершается с ошибкой; если этот параметр
равен FALSE, и новый файл существует, то функция перезаписывает
его и завершается нормально.
В Windows NT имеется также новая функция CopyFileEx(), которая
имеет дополнительные параметры по сравнению с CopyFile().
·
Функция DeleteFile удаляет
существующий файл. Её синтаксис:
BOOLDeleteFile(LPCTSTR lpFileName);
Единственный параметр функции –указатель на строку с именем удаляемого файла.
· Функция MoveFile перемещает или переименовывает существующий файл. Операции переименования и перемещения файла по сути очень сходны, так как даже при перемещении с прежним именем у файла изменяется путь (полное имя). Синтаксис:
BOOLMoveFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName);
первый параметр – адрес имени имени существующего файла или каталога, второй –
адрес нового имени файла. При успешном выполнении функция возвращает TRUE.
Сходная функция MoveFileEx() имеет дополнительный параметр – флаг,
который управляет особенностями перемещения файла.
В Приложении 1 приведена программа, в которой демонстрируются вышеприведенные функции.
2.3. Функции Win32 API для записи информации в файл и чтения из файла
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.