Автор работы: Пользователь скрыл имя, 04 Февраля 2014 в 22:50, контрольная работа
Информация, представляемая для обработки на компьютере, называется данными. Для хранения на устройствах внешней памяти данные организуют в виде файлов. Файл — именованная область внешней памяти. Файлы необходимы для долговременного хранения данных и программ и являются самой простой формой связи между программами. Способ организации как служебной, так и пользовательской информации о файлах на носителях называют файловой системой. Конкретная файловая система определяет, в частности, правила именования файлов.
1. Понятие файла;
2. Чтение и запись в файл.
Министерство образования Республики Беларусь
Учреждение образования
«Белорусский государственный университет информатики
и радиоэлектроники»
Контрольная работа по курсу:
«Операционные системы и управление базами данных»
на тему: «Понятие файла. Чтение и запись в файл»
Вариант № 21
Выполнила студентка группы ИПОИТ 100901
Кулакова Татьяна Андреевна
Минск 2013
Содержание:
1. Понятие файла.
Информация, представляемая для обработки на компьютере, называется данными. Для хранения на устройствах внешней памяти данные организуют в виде файлов. Файл — именованная область внешней памяти. Файлы необходимы для долговременного хранения данных и программ и являются самой простой формой связи между программами.
Способ организации
как служебной, так и пользовательской
информации о файлах на носителях называют файловой системой. Конкретная файловая
система определяет, в частности, правила
именования файлов.
Файл является универсальным информационным
объектом. Любая работа, выполненная на
компьютере (текст, рисунки, аудио- и видеозапись,
база данных, программа), оформляется в
виде файлов.
Имя файла состоит из двух частей, разделенных точкой: собственно имя файла и расширение, определяющее его тип (программа, данные и т. д.). Эти две части разделены между собой точкой. Имя файлу присваивает пользователь, или программа, создающая файл, предлагает имя в автоматическом режиме, а тип файла обычно задается программой автоматически при его создании.
С точки зрения прикладных
программ, файл представляет собой некоторую
последовательность байтов. Используя
такой подход, как доступ к файлам, организуется
также доступ к некоторым устройствам,
которые принимают или возвращают поток байтов. К таким устройствам относятся
принтеры, модемы, клавиатура или поток
текстового вывода на экран и др.
В некоторых операционных системах предусмотрен
такой доступ и к служебной информации
самих носителей. Для работы с такими файлами
предусмотрены специальные, зарезервированные
системой, имена файлов. В различных операционных
системах существуют различные форматы
имен файлов.
В операционной системе MS-DOS собственно имя
В ОС Windows имя файла может иметь до 255 символов, причем допускается использование русского алфавита, например: Единицы измерения информации.doc.
Имя файла должно содержать не менее одного символа. Запрещается использовать в имени файла следующие символы / \ : * ? " < > | .
Тип файла |
Расширение |
Готовая к выполнению программа |
exe, com |
Пакетный командный файл |
bat |
Программа-драйвер устройства (системная) |
sys |
Резервная копия файла |
bak |
Объектный модуль («полуфабрикат» программы) |
obj |
Текстовые файлы |
txt, rtf, doc |
Графические файлы |
Bmp, gif, jpg, png, pds и др. |
Web-страницы |
Htm |
Звуковые файлы |
wav, mp3 и др. |
Видеофайлы |
avi, mpeg |
Код (текст) программы на языках программирования |
bas, pas, cpp и др |
Для удобства хранения и
работы файловые структуры организуются
с помощью вложенных каталогов (папок).
На каждом носителе может быть множество
каталогов. В каждом каталоге может быть
зарегистрировано много файлов, но каждый
файл регистрируется только в одном каталоге.
На каждом логическом томе присутствует
один главный, или корневой, каталог. В
нем регистрируются файлы и подкаталоги
(каталоги 1 уровня). В каталогах 1 уровня
регистрируются файлы и каталоги 2 уровня
и т. д. Получается древовидная структура
каталогов.
Каталог, с которым работает пользователь
в настоящий момент, называется текущим.
Когда используется файл не из текущего
каталога, программе, осуществляющей доступ
к файлу, необходимо указать, где именно
этот файл находится. Это делается с помощью
указания пути к файлу.
Путь к файлу — это последовательность
имен каталогов, в операционных системах
Windows разделенных символом «\» (в ОС линии
UNIX используется символ «/»). Этот путь
задает маршрут к тому каталогу, в котором
находится нужный файл.
Например:
\KLASS10\DOCS\START2\text.doc –
это означает, что файл text. doc находится
в подкаталоге START2, который находится
в каталоге DOCS, а он в свою очередь находится
в каталоге KLASS10 корневого каталога.
2. Чтение и запись в файл.
Для того, чтобы начать
работать с файлами в Windows необходимо
открыть или создать файл, а
затем осуществлять чтение или запись.
Порядок чтения/записи из файла можно
рассматривать в виде следующей последовательности
шагов:
1. Открытие или создание файла с помощью функции CreateFile, задав флаг FILE_FLAG_OVERLAPPED. Сделав это мы можем использовать ReadFile и WriteFile. Каждый открытый файл имеет файловый указатель (file pointer), который указывает позицию следующего файла, который будет записан/прочтен. При открытии файла его файловый указатель перемещается на начало файла. После прочтения/записи очередного файла система перемещает файловый указатель. Файловый указатель можно перемещать, используя функцию SetFilePointer.
2. Чтение данных из файла с помощью функции ReadFile или запись в файл с помощью функции WriteFile, куда в качестве первого параметра передается дескриптор файла, полученный на предыдущем шаге.
3. Закрытие файла с помощью функции CloseHandle, в качестве параметра используется дескриптор файла.
Существует два типа операций ввода-вывода – синхронный и асинхронный типы.
Большинство операций ввода-вывода
приложений являются синхронными, т. е. приложение ждет, когда устройство
выполнит передачу данных и вернет код
статуса по завершении операции ввода-вывода.
После этого программа продолжает работу
и немедленно использует полученные данные.
B таком простейшем варианте Windows-функции ReadFile и Wri
Асинхронный ввод-вывод позволяет приложению выдать запрос на ввод-вывод и продолжить выполнение, не дожидаясь передачи данных устройством. Этот тип ввода-вывода увеличивает эффективность работы приложения, позволяя заниматься другими задачами, пока выполняется операция ввода-вывода. Для использования асинхронного ввода-вывода при вызове функции указывается флаг FILE_FLAG_OVERLAPPED.
Для выполнения асинхронных операций ввода-вывода в Windows предусмотрены три метода.
Самой распространенной и наиболее простой является методика, основанная на использовании потоков (многопоточный ввод-вывод). Каждый из потоков отвечает за выполнение определенной последовательности действий, состоящей из одной или нескольких последовательно выполняющихся, блокирующихся операций ввода-вывода. Кроме того, каждый поток должен располагать собственным дескриптором файла или канала.
Перекрывающийся ввод-вывод (собственно асинхронный ввод-вывод): после начала чтения/записи или другой операции ввода-вывода поток продолжает выполнение. Если потоку для продолжения нужны результаты ввода-вывода, ожидает сигнала дескриптора либо указанного события.
Расширенный ввод-вывод (процедуры завершения): когда операция ввода-вывода завершается, система вызывает в потоке указанную процедуру завершения и не требует использования дополнительных событий.
Чтение в файл.
Функция ReadFile читает из файла блок данных начиная с текущей позиции. После прочтения блока, позиция переносится в конец прочитанного блока.
Формат записи функции:
BOOL ReadFile (
HANDLE hFile, // дескриптор файла
LPVOID lpBuffer, // указатель на буфер данных,
куда поместится прочитанный блок
DWORD nNumberOfBytesToRead, // количество байт для
прочтения
LPDWORD lpNumberOfBytesRead, // количество фактически
прочитанных байт
LPOVERLAPPED lpOverlapped // флаг режима доступа
к файлу:
асинхронный (<strong>FILE_FLAG_OVERLAPPED<
// или синхронный (<strong>NULL</strong>)
);
Параметры:
hFile: дескриптор читаемого файла. Должен быть открыт с доступом GENERIC_READ;
lpBuffer: указатель на буфер, принимающий данные из файла;
nNumberOfBytesToRead: задаёт количество байт, которые необходимо прочитать из файла;
lpNumberOfBytesRead: указатель на переменную типа DWORD, в которую будет записано фактическое число байтов, прочитанное функцией ReadFile. Этот параметр может принимать нулевое значение, если перед выполнением чтения указатель файла был позиционирован в конце файла или если во время чтения возникли ошибки, а также после чтения из именованного канала, работающего в режиме обмена сообщениями, если переданное сообщение имеет нулевую длину.
lpOverlapped: указатель на структуру OVERLAPPED. При синхронном доступе передается NULL.
Если hFile был открыт с флагом FILE_FLAG_OVERLAPPED и указатель lpOverlapped не равен NULL, операция чтения начинается со смещения указанного в структуре OVERLAPPED и может вернуть результат до завершения операции чтения. В этом случае об окончании операции чтения, сигнализирует событие в структуре OVERLAPPED.
Если hFile был открыт без флага FILE_FLAG_OVERLAPPED и указатель lpOverlapped равен NULL, операция чтения начинается с текущей позиции файла и не может вернуть результат до завершения операции чтения.
Если hFile был открыт без флага FILE_FLAG_OVERLAPPED и указатель lpOverlapped не равен NULL, операция чтения начинается со смещения указанного в структуре OVERLAPPED и не может вернуть результат до завершения операции чтения.
Возвращаемое значение: если выполнение функции произошло успешно,
то возвращается ненулевое значение (TRUE),
иначе – FALSE. Если возвращено ненулевое
значение, но прочитано 0 байт, значит файловый
указатель стоял на конце файла перед
операцией чтения.
Запись в файл.
Функция WriteFile производит запись блока данных, начиная с текущей позиции в файле. При синхронной записи файловый указатель сдвигается на фактически записанное количество байт.
Формат записи функции:
BOOL WriteFile (
HANDLE hFile, // дескриптор файла
LPCVOID lpBuffer, // указатель на буфер данных
куда помещаются данные для записи
DWORD nNumberOfBytesToWrite, // количество байт для
записи
LPDWORD lpNumberOfBytesWritten,// количество фактически
записанных байт
LPOVERLAPPED lpOverlapped // флаг режима доступа к
файлу:
асинхронный (<strong>FILE_FLAG_OVERLAPPED<
// или синхронный (<strong>NULL</strong>)
);
Параметры:
hFile: дескриптор файла, в который производится запись. Должен быть открыт с доступом GENERIC_WRITE;
lpBuffer: указатель на буфер, содержащий данные, которые необходимо записать;
nNumberOfBytesToWrite: задаёт количество байт, которые необходимо записать в файл;
lpNumberOfBytesWritten: указатель на переменную типа DWORD, в которую будет записано фактическое число байтов, записанное функцией WriteFile;
lpOverlapped: укзатель на структуру OVERLAPPED. При синхронном доступе передается NULL.
Возвращаемое значение: если выполнение функции произошло успешно, то возвращается ненулевое значение (TRUE), иначе – FALSE.
ЛИТЕРАТУРА
1.http://ngebooks.com/book_
2.http://i2r.ru/static/565/
3.http://www.uhlib.ru/
4.http://fevt.ru/load/29-1-0-
5.http://forum.hackersoft.ru/
6.http://zetblog.ru/
7.http://lingvodet.ru/