Понятие файла. Чтение и запись в файл

Автор работы: Пользователь скрыл имя, 04 Февраля 2014 в 22:50, контрольная работа

Краткое описание

Информация, представляемая для обработки на компьютере, называется данными. Для хранения на устройствах внешней памяти данные организуют в виде файлов. Файл — именованная область внешней памяти. Файлы необходимы для долговременного хранения данных и программ и являются самой простой формой связи между программами. Способ организации как служебной, так и пользовательской информации о файлах на носителях называют файловой системой. Конкретная файловая система определяет, в частности, правила именования файлов.

Содержание

1. Понятие файла;
2. Чтение и запись в файл.

Вложенные файлы: 1 файл

Контр по базам ПЕЧАТЬ.doc

— 72.00 Кб (Скачать файл)

Министерство образования  Республики Беларусь

Учреждение образования

«Белорусский государственный  университет информатики

и радиоэлектроники»

 

 

 

 

 

 

 

 

 

Контрольная работа по курсу:

«Операционные системы  и управление базами данных»

на тему: «Понятие файла. Чтение и запись в файл»

 

Вариант № 21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнила студентка  группы ИПОИТ 100901

Кулакова Татьяна Андреевна

 

 

 

 

 

 

Минск 2013

 

Содержание:

 

    1. Понятие файла;
    2. Чтение и запись в файл.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Понятие файла.

 

Информация, представляемая для обработки на компьютере, называется данными. Для хранения на устройствах внешней памяти данные организуют в виде файлов. Файл — именованная область внешней памяти. Файлы необходимы для долговременного хранения данных и программ и являются самой простой формой связи между программами.

Способ организации  как служебной, так и пользовательской информации о файлах на носителях называют файловой системой. Конкретная файловая система определяет, в частности, правила именования файлов. 
 Файл является универсальным информационным объектом. Любая работа, выполненная на компьютере (текст, рисунки, аудио- и видеозапись, база данных, программа), оформляется в виде файлов.

Имя файла состоит из двух частей, разделенных точкой: собственно имя файла и расширение, определяющее его тип (программа, данные и т. д.). Эти две части разделены между собой точкой.  Имя файлу присваивает пользователь, или программа, создающая файл, предлагает имя в автоматическом режиме, а тип файла обычно задается программой автоматически при его создании.

С точки зрения прикладных программ, файл представляет собой некоторую последовательность байтов. Используя такой подход, как доступ к файлам, организуется также доступ к некоторым устройствам, которые принимают или возвращают поток байтов. К таким устройствам относятся принтеры, модемы, клавиатура или поток текстового вывода на экран и др. 
 В некоторых операционных системах предусмотрен такой доступ и к служебной информации самих носителей. Для работы с такими файлами предусмотрены специальные, зарезервированные системой, имена файлов. В различных операционных системах существуют различные форматы имен файлов.

В операционной системе MS-DOS собственно имя файла должно содержать не более восьми букв латинского алфавита и цифр, а расширение состоит из трех латинских букв, например: proba.txt

В ОС 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 и WriteFile выполняются синхронно. Перед возвратом управления они должны завершить операцию ввода-вывода.

Асинхронный ввод-вывод позволяет приложению выдать запрос на ввод-вывод и продолжить выполнение, не дожидаясь передачи данных устройством. Этот тип ввода-вывода увеличивает эффективность работы приложения, позволяя заниматься другими задачами, пока выполняется операция ввода-вывода. Для использования асинхронного ввода-вывода  при вызове  функции указывается флаг FILE_FLAG_OVERLAPPED.

Для выполнения асинхронных  операций ввода-вывода в Windows предусмотрены три метода.

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

Перекрывающийся ввод-вывод (собственно асинхронный ввод-вывод): после начала чтения/записи или другой операции ввода-вывода поток продолжает выполнение. Если потоку для продолжения нужны результаты ввода-вывода, ожидает сигнала дескриптора либо указанного события. 

Расширенный ввод-вывод (процедуры завершения): когда операция ввода-вывода завершается, система вызывает в потоке указанную процедуру завершения и не требует использования дополнительных событий.

 

Чтение в файл.

Функция ReadFile читает из файла блок данных начиная с текущей позиции. После прочтения блока, позиция переносится в конец прочитанного блока.

Формат записи функции:

BOOL ReadFile ( 
 HANDLE hFile, // дескриптор файла 
 LPVOID lpBuffer, // указатель на буфер данных, куда поместится прочитанный блок 
 DWORD nNumberOfBytesToRead, // количество байт для прочтения 
 LPDWORD lpNumberOfBytesRead, // количество фактически прочитанных байт 
LPOVERLAPPED lpOverlapped //  флаг режима доступа к файлу:

асинхронный (<strong>FILE_FLAG_OVERLAPPED</strong>)

// или синхронный (<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>)

// или синхронный (<strong>NULL</strong>)

);

Параметры:

hFile: дескриптор файла, в который производится запись. Должен быть открыт с доступом GENERIC_WRITE;

lpBuffer: указатель на буфер, содержащий данные, которые необходимо записать;

nNumberOfBytesToWrite: задаёт количество байт, которые необходимо записать в файл;

lpNumberOfBytesWritten: указатель на переменную типа DWORD, в которую будет записано фактическое число байтов, записанное функцией WriteFile;

lpOverlapped: укзатель на структуру OVERLAPPED. При синхронном доступе передается NULL.

Возвращаемое значение: если выполнение функции произошло успешно, то возвращается ненулевое значение (TRUE), иначе – FALSE.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЛИТЕРАТУРА

 

1.http://ngebooks.com/book_28698_chapter_42_Sinkhronnyjj_i_asinkhronnyjj_vvod-vyvod.html;

2.http://i2r.ru/static/565/out_16417.shtml;

3.http://www.uhlib.ru/kompyutery_i_internet/sistemnoe_programmirovanie_v_srede_windows/p15.php;

4.http://fevt.ru/load/29-1-0-51;

5.http://forum.hackersoft.ru/showthread.php?t=5047;

6.http://zetblog.ru/programming/200902/winapi-работа-с-файлами-основные-функции;

7.http://lingvodet.ru/operatsii_s_faylami-rabota_s_faylami.




Информация о работе Понятие файла. Чтение и запись в файл