Лабораторная работа №1 Функции Win32 api для работы с файлами Лабораторный практикум Математический факультет




Скачать 77.45 Kb.
Дата08.06.2016
Размер77.45 Kb.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«КЕМЕРОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Кафедра ЮНЕСКО по Новым информационным технологиям

СИСТЕМНОЕ И ПРИКЛАДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.


ЛАБОРАТОРНАЯ РАБОТА №1
Функции Win32 API для работы с файлами

Лабораторный практикум




Математический факультет

Специальность 010501 – Прикладная математика

Кемерово, 2012

  1. Цель работы:


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


Лабораторная работа должна быть реализована в системе программирования Microsoft Visual Studio (C++).

Требования к результатам выполнения лабораторного практикума:



  • Включить в отчет листинг программы;

  • при выполнении задания необходимо сопровождать все проделанные действия скриншотами и описаниями к ним;

  • также необходимо придерживаться строгой последовательности действий, при выполнении заданий;

  • сделать общий вывод.

При составлении и оформлении отчета следует придерживаться рекомендаций, представленных на странице http://unesco.kemsu.ru/student/rule/rule.html.
  1. Теоретический материал


Теоретический материал изложен в книге [1], основные функции Win32 API используемые для работы с файлами и каталогами:

  1. CreateFile – создание или открытие файла

  2. DeleteFile – удаление файла

  3. CloseHandle – закрытие файла

  4. ReadFile – чтение из файла

  5. WriteFile – запись в файл

  6. LockFile – блокировка файла

  7. UnlockFile – разблокировка файла

  8. FindFirstFile – поиск первого файла по заданному имени или маске

  9. FindNextFile – поиск каждого последующего файла по заданной маске

  10. FindClose – завершение поиска

  11. SetFilePointer – установка указателя в файле

  12. CreateDirectory – создание каталога

  13. RemoveDirectory – удаление пустого каталога


Примечание:

    • удаление каталога, поскольку функция RemoveDirectory удаляет лишь пустые каталоги. Реализовать функцию удаления любых каталогов с использованием рекурсии или стеков на основе функций RemoveDirectory, FindFirstFile, FindNextFile, FindClose и DeleteFile;

    • При создании проекта необходимо использовать библиотеку kernel32.lib;

    • в исходном файле подключать заголовочные файлы: (“windows.h”, “winbase.h”).


Создание файла: функция CreateFile (подробное описание функции в книге [1] на стр.47)

HANDLE CreateFile(

LPCTSTR lpFileName, // pointer to name of the file

DWORD dwDesiredAccess, // access (read-write) mode

DWORD dwShareMode, // share mode

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

// pointer to security attributes



DWORD dwCreationDisposition, // how to create

DWORD dwFlagsAndAttributes, // file attributes

HANDLE hTemplateFile // handle to file with attributes to

// copy


);

Параметры вызова функции CreateFile:

lpFileName – указатель на имя файла, который требуется открыть или создать. Указатель содержит путь к файлу.

dwDesiredAccess – параметр, определяет какие действия можно производить с содержимым файла.

Константы значений:



0

чтение информации о файле

GENERIC_READ

разрешено чтение из файла

GENERIC_WRITE

разрешена запись в файл

GENERIC_READ | GENERIC_WRITE

разрешено чтение из файла и запись в файл


dwShareMode – параметр, определяет права по совместному доступу разных процессов к файлу.

Константы значений:



0

чтение информации о файле

FILE_SHARE_READ

разрешено чтение из файла

FILE_SHARE_WRITE

разрешена запись в файл

FILE_SHARE_READ | FILE_SHARE_WRITE

разрешено чтение из файла и запись в файл


lpSecurityAttributes – параметр, защиты файла. Значение NULL означает, что защита не требуется.

dwCreationDisposition – параметр, определяет какие действия необходимо произвести в тех случаях, когда файл уже существует и когда файл не существует.

Константы значений:



CREATE_NEW

Создается новый файл. Если файл существует, то функция завершается с ошибкой.

CREATE_ALWAYS

Создается новый файл. Если файл существует, то он перезаписывается.

OPEN_EXISTING

Открывается существующий файл. Если файл не существует, то функция завершается с ошибкой.

OPEN_ALWAYS

Открывается существующий файл. Если файл не существует, то создается новый файл.


dwFlagsAndAttributes – параметр, указывает атрибуты и флаги для файла. Флаги можно комбинировать друг с другом.

Константы значений: [1], стр.50.



hTemplateFile – параметр указывает HANDLE уже открытого файла или NULL.
Пример: Программа создания и закрытия файла.


Запись данных в файл: функция WriteFile (подробное описание функции в книге [1] на стр.56)

BOOL WriteFile(

HANDLE hFile, // указатель на имя файла

LPVOID lpBuffer, // указатель на буфер записываемых данных

DWORD nNumberOfBytesToRead, // количество записываемых байт

LPDWORD lpNumberOfBytesRead, // количество записанных байт

LPOVERLAPPED lpOverlapped // NULL

);


Чтение данных из файла: функция ReadFile (подробное описание функции в книге [1] на стр.55)

BOOL ReadFile(

HANDLE hFile, // указатель на имя файла

LPVOID lpBuffer, // указатель на буфер для получаемых данных

DWORD nNumberOfBytesToRead, // количество запрашиваемых байт

LPDWORD lpNumberOfBytesRead, // количество считанных байт

LPOVERLAPPED lpOverlapped // NULL

);




Пример: Программа записи и чтения из файла.


Создание каталога: функция CreateDirectory (подробное описание функции в книге [1] на стр.40)

BOOL CreateDirectory(

LPCTSTR lpPathName, // указатель на имя каталога

LPSECURITY_ATTRIBUTES lpSecurityAttributes // указатель защиты (NULL)

);



Удаление каталога: функция RemoveDirectory (подробное описание функции в книге [1] на стр.40)

BOOL RemoveDirectory(

LPCTSTR lpPathName, // указатель на имя каталога

);


Пример: Программа создания и удаления каталога.


Работа со строками

Имена файлов и каталогов в функции Win32 API передаются как указатели на переменную типа wchar_t.

Для работы со строками и строковыми переменными необходимо подключить следующие заголовочные файлы и библиотеки:

#include

#include

using namespace std;


После этого можно использовать операторы win и wout для ввода строки с клавиатуры и вывода на экран, соответственно.

Пример:

wchar_t wcNewDirName[50];


wcout << "Enter name new directory: ";

wcin >> wcNewDirName;


Пример: объединения двух строк для задания имени файла
wchar_t wcDirName[50],wcCurDirName[50],wcNewDirName[50];

wcscpy_s(wcCurDirName,L"c:\\work\\CreateDirectory\\");

wcscpy_s(wcDirName,wcCurDirName); // Копирование одной строки в другую

wcscat_s(wcDirName,wcNewDirName); // Добавление второй строки к первой


Пример: преобразование типов
wchar_t wcDirName[50]; // Переменная - имя директории

wchar_t *lpBuffer; // Указатель на wcDirName

LPSECURITY_ATTRIBUTES lpSecurityAttributes; lpSecurityAttributes=NULL;
lpBuffer=wcDirName; // Задание указателя на имя директории

LPCTSTR lpDirName=(LPCTSTR) lpBuffer; // Преобразование к типу LPCTSTR

CreateDirectory(lpDirName,lpSecurityAttributes);

  1. Порядок выполнения работы


  • Изучить предлагаемый теоретический материал.

  • Создать программу, реализующую функции Win32 API работы с файлами и каталогами (согласно варианту).

  • Подготовить отчет о проделанной работе.

Требования к приложению:

Для работы с приложение должно быть создано меню, содержащее следующие пункты:



  1. Функция №1;

  2. Функция №2;

  3. Выход.

При выборе каждого пункта программа запрашивает путь к создаваемому объекту (файлу или каталогу) и его имя.

Варианты задания:

1. Программа выполняет функции создания файлов и копирования данных из одного файла в другой.

2. Программа выполняет функции удаления файлов и пустых каталогов.

3. Программа выполняет функции создания файлов и каталогов.

4. Программа выполняет функции создания и удаления файлов.

5. Программа выполняет функции создания и удаления каталогов.

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

7. Программа выполняет вывод на экран содержимого текстового файла.

8. Программа выполняет функцию копирования данных из одного файла в другой.

9. Программа выполняет функцию удаления непустого каталога.



10. Программа выполняет вывод на экран списка всех файлов заданного каталога.
  1. Содержание отчета


В отчете следует указать:

  • Цель работы

  • Введение

  • Программно-аппаратные средства, используемые при выполнении работы.

  • Основную часть (описание самой работы), выполненную согласно требованиям к результатам выполнения лабораторного практикума.

  • Заключение (выводы)

  • Список используемой литературы
  1. Литература:


  1. Румянцев П.В. Работа с файлами в Win32 API.

  2. Щупак Ю. А. Win32 API. Эффективная разработка приложений. – СПб.: Питер, 2007. — 572 с.







База данных защищена авторским правом ©uverenniy.ru 2016
обратиться к администрации

    Главная страница