Функции управления файлами

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

ОС семейства Windows управляют файлами посредством файловых объектов, дескрипторов (описателей) файлов и файловых указателей.

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

Таблица 21 - Функции управления файлами

Функция Описание
CreateFile Создает или открывает файл, каталог, физический диск, буфер консольного ввода и т.п. В качестве параметров этой функции задаются: · Указатель на имя открываемого или создаваемого объекта (в ANSI версии функции CreateFile длина имени ограничена значением 256 (формально - 260, однако с именем диска и завершающим нулем на имя файла остается 256 символов), для более длинных путей следует использовать Unicode-версию функции - до 32000 символов, разбитых на компоненты по 255 символа). В качестве имени файла может выступать имя устройства или имя драйвера устройства. Имя устройства имеет формат: \\.\ Имя_устройства (\\.\А - имя дисковода для гибких магнитных дисков и т.п.); · Тип доступа к файлу (чтение, запись или чтение/запись); · Тип режима разделения доступа к файлу (разрешает или запрещает другим процессам чтение, запись или чтение/запись открытого файла); · Указатель на структуру данных защиты файла; · Действия, осуществляемые при существовании или отсутствии обрабатываемых файлов (определяет, перезаписывать создаваемые файлы или нет и т.п.) · Атрибуты файла (архивный, спрятанный, системный, временный и т.п.) · Указатель на шаблон создаваемого файла В результате выполнения функции CreateFile возвращается дескриптор созданного или открытого файла.
DeleteFile Удаляет существующий файл. В качестве входного параметра задается указатель на имя файла. В случае успешного выполнения, функция возвращает ненулевое значение
CopyFile Копирует существующий файл в новый файл. В качестве входных параметров задаются: · Указатель на имя существующего файла; · Указатель на имя нового файла · Флаг, определяющий действия при существовании файла с именем, совпадающим с заданным в качестве нового: если этот флаг равен 0, то старый файл перезапишется, если флаг равен 1 - функция CopyFileне выполнится Атрибуты защиты копироваться не будут, а вот атрибуты файла - скопируются.
FindFirstFile Ищет в каталоге файл или подкаталог с заданным именем. В качестве входного параметра задается указатель на имя искомого файла или каталога, а в качестве результата работы функции FindFirstFileвозвращается указатель на структуру данных WIN32_FIND_DATA, в которой собирается информация о найденном файле или каталоге (атрибуты файла, время создания и последнего доступа, размер, полное и краткое имя файла).
SetFileAttributes Устанавливает атрибуты файла. В качестве входных параметров задается указатель на имя файла, для которого устанавливаются атрибуты и 32-х разрядное слово, хранящее значение устанавливаемых атрибутов файла. Часть кодов атрибутов файлов в Windows совпадает с кодами атрибутов файлов для MS-DOS.
SetFilePointer Устанавливает файловый указатель, который используется при чтении и записи в определенную позицию. В качестве входных параметров задается дескриптор файла, 64-х двоичное число со знаком, определяющее количество байт и направление смещения указателя (это число представлено в виде двух входных параметров, один - младшие 32 бита, второй, дополнительные - старшие 32 бита), и положение от которого будет осуществляться позиционирование файлового указателя (начало файла, конец файла или текущее положение файлового указателя).
ReadFile Считывает данные из файла, начиная с позиции, на которую указывает файловый указатель. В качестве входных параметров задаются: · дескриптор файла, из которого будут читаться данные; · указатель на буфер, в который будут записываться считанные данные; · количество байтов, которые должны быть считаны; · указатель на переменную, хранящую количество считанных байт; · указатель на структуру данных типа Overlapped, которая сдержит информацию при асинхронном вводе/выводе. При успешном завершении процесса чтения функция ReadFileвозвращает ненулевое значение (в регистре EAX). Если функция ReadFileвернула ненулевое значение, а переменная хранящая количество считанных байт равна 0, это значит что в процессе чтения был достигнут конец файла. Если функция ReadFileвернула значение равное 0, значит произошла какая-то ошибка.
WriteFile Записывает данные в файл, начиная с позиции, определяемой файловым указателем. В качестве входных параметров задаются: · дескриптор файла, в который будут записываться данные; · указатель на буфер, из которого будут считываться записываемые данные; · количество байтов, которые должны быть записаны; · указатель на переменную, хранящую количество записанных байт; · указатель на структуру данных типа Overlapped, которая сдержит информацию при асинхронном вводе/выводе. При успешном завершении процесса чтения функция ReadFileвозвращает ненулевое значение (в регистре EAX).
FlushFileBuffers Сбрасывает все буферы указанного файла и записывает все буферизованные данные в файл. В качестве входного параметра задается дескриптор файла. При успешном завершении процесса чтения функция FlushFileBuffersвозвращает ненулевое значение (в регистре EAX).
LockFile Блокирует определенный файл для единоличного пользования вызывающим процессом. В качестве входных параметров задаются: · дескриптор файла; · смещение первого байта блокируемого участка данных в файле · число блокируемых байтов. Поскольку два последних параметра могут превышать значения, умещающиеся в 32-х разрядное двоичное число, эти параметры состоят из двух частей: старшего 32-х разрядного слова и младшего. При успешном завершении процесса чтения функия LockFileвозвращает ненулевое значение (в регистре EAX).

Необходимо отметить, что при чтении/записи данных, пользовательское приложение не должно иметь доступ к буферу данных, до окончания всего процесса чтения/записи.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: