» Главная
eXcode.ru » Статьи » WinAPI
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 8





Функции работы с файлами




Источник: VR-online

Заканчиваем изучать WinAPI работы с фалами и дисками. Это последняя статья, потому что в следующий раз мы перейдём к рассмотрению другой группы WinAPI функций. Я постарался дать тебе максимум инфе о основных API для работы с файлами. Надеюсь, что я работал не зря.

Сегодня ты узнаешь про:

* ReadFile
* RemoveDirectory
* SetCurrentDirectory
* SetEndOfFile
* SetFileAttributes
* SetFilePointer
* SetVolumeLabel
* WriteFile

ReadFile

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

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++


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


Для Delphi


function ReadFile(
hFile: THandle; // Указатель на открытый файл
var Buffer; // Указатель на буфер, куда поместится прочитанный блок
nNumberOfBytesToRead: DWORD; // количество прочитанных байтов
var lpNumberOfBytesRead: DWORD; // указатель на число прочитанных данных
lpOverlapped: POverlapped // указатель на структуру OVERLAPPED
): BOOL; stdcall;


Если всё ничтяк, то функция вернёт TRUE.

RemoveDirectory

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

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++


BOOL RemoveDirectory(
LPCTSTR lpPathName // Указатель на путь директории
);


Для Delphi


function RemoveDirectory(
lpPathName: PChar// Указатель на путь директории
): BOOL; stdcall;


Если всё ничтяк, то функция вернёт TRUE.

Пример использования: RemoveDirectory("с:Windows");

SetCurrentDirectory

Функция изменяет текущую директорию на указанную. Это значит, что когда ты будешь использовать другие функции работы с файлами, и не указывать путь, то ОС будет искать файл в этой директории.

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++


BOOL SetCurrentDirectory(
LPCTSTR lpPathName // Указатель на строку, содержащую путь
);


Для Delphi


function SetCurrentDirectory(
lpPathName: PChar // Указатель на строку, содержащую путь
): BOOL; stdcall;


Если всё ничтяк, то функция вернёт TRUE.

SetEndOfFile

Функция делает текущую позицию файла концом файла. Если тебе нужно сократить размер файла, то вызови эту функцию, установи курсор в необходимую позицию и вызови эту функцию.

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++


BOOL SetEndOfFile(
HANDLE hFile // Указатель на открытый файл
);


Для Delphi


function SetEndOfFile(
hFile: THandle // Указатель на открытый файл
): BOOL; stdcall;


Если всё ничтяк, то функция вернёт TRUE.

SetFileAttributes

Функция позволяет устанавливать на файл атрибуты.

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++


BOOL SetFileAttributes(
LPCTSTR lpFileName, // Путь к файлу
DWORD dwFileAttributes // Будущие атрибуты файла
);


Для Delphi


function SetFileAttributes(
lpFileName: PChar; // Путь к файлу
dwFileAttributes: DWORD // Будущие атрибуты файла
): BOOL; stdcall;


С первым параметром всё ясно. Это просто путь к файлу. А вот второй параметр это атрибуты. Они могут быть в виде сочетания следующих флагов:

* FILE_ATTRIBUTE_ARCHIVE - атрибут архивного файла.
* FILE_ATTRIBUTE_HIDDEN - атрибут спрятанного файла.
* FILE_ATTRIBUTE_NORMAL - атрибут нормального файла.
* FILE_ATTRIBUTE_OFFLINE - указывает на то, что данные файла не доступны и находятся на отключённом устройстве
* FILE_ATTRIBUTE_READONLY - атрибут файла только для чтения.
* FILE_ATTRIBUTE_SYSTEM - атрибут системного файла.
* FILE_ATTRIBUTE_TEMPORARY - атрибут временного файла.

Если всё ничтяк, то функция вернёт TRUE.

SetFilePointer

Функция устанавливает позицию в файле. Например, если ты хочешь прочитать данные из файла начиная с какой-то позиции, то ты должен воспользоватся этой функцией, чтобы выставить позицию, а потом прочитать данные начиная с этой позиции.

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++


DWORD SetFilePointer(
HANDLE hFile, // Указатель на открытый файл
LONG lDistanceToMove, // количество байт, на которые надо передвинуться
PLONG lpDistanceToMoveHigh, // Второй байт, указывающий количество байт
DWORD dwMoveMethod //Откуда нужно начинать двигаться
);


Для Delphi


function SetFilePointer(
hFile: THandle; // Указатель на открытый файл
lDistanceToMove: Longint; // количество байт, на которые надо передвинуться
lpDistanceToMoveHigh: Pointer; // Второй байт, указывающий количество байт
dwMoveMethod: DWORD //Откуда нужно начинать двигаться
): DWORD; stdcall;


Первый параметр - указатель на открытый файл. Второй и третий параметры определяют количество байт, на которые надо передвинуться. Последний параметр - это флаг определяющий откуда надо начинать двигаться:

* FILE_BEGIN - Передвинуться от начала файла вперёд.
* FILE_CURRENT - Передвинуться начиная от текущей позиции вперёд.
* FILE_END - Передвинуться от конца файла к началу.

Если всё ничтяк, то функция вернёт младший байт установленной позиции.

Если ты хочешь узнать текущую позицию файла, то можешь смухлевать, вызвав функцию с такими параметрами: SetFilePointer(h,0,0, FILE_CURRENT). Этим ты заставляешь передвинутся на 0 байтов от текущей позиции. Передвижения не произойдёт, но функция вернёт новую позицию файла, то есть текущую.

SetVolumeLabel

Функция устанавливает метку тома

Существует в: Win NT, Win9x.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++


BOOL SetVolumeLabel(
LPCTSTR lpRootPathName, // Указатель на имя тома
LPCTSTR lpVolumeName // Метка тома
);


Для Delphi


function SetVolumeLabel(
lpRootPathName: PChar; // Указатель на имя тома
lpVolumeName: PAnsiChar// Метка тома
): BOOL; stdcall;


Если всё ничтяк, то функция вернёт TRUE.

WriteFile

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

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++


BOOL WriteFile(
HANDLE hFile, // Указатель на открытый файл
LPCVOID lpBuffer, // Указатель на данные для записи
DWORD nNumberOfBytesToWrite, // Количество записанных байт
LPDWORD lpNumberOfBytesWritten,// Указатель на количество записанных байт
LPOVERLAPPED lpOverlapped // Указатель на структуру OVERLAPPED
);


Для Delphi


function WriteFile(
hFile: THandle; // Указатель на открытый файл
const Buffer; // Указатель на данные для записи
nNumberOfBytesToWrite: DWORD; // Количество записанных байт
var lpNumberOfBytesWritten: DWORD; // Указатель на количество записанных байт
lpOverlapped: POverlapped // Указатель на структуру OVERLAPPED
): BOOL; stdcall;


Если всё ничтяк, то функция вернёт TRUE.

На этом я заканчиваю рассмотрения функций для работы с файлами.
К началу статьи





Добавил: LedWormДата публикации: 2005-09-19 21:26:13
Рейтинг статьи:3.00 [Голосов 5]Кол-во просмотров: 21860

Комментарии читателей

Всего комментариев: 4

2009-08-09 13:29:15
Uxoos
А!, чёрт!! Опять на эту статью наткнулся!

2009-04-19 14:42:13
Uxoos
Примеры ГДЕ??!!!! Я что? Долбак?

2009-03-09 19:28:56
modistroy
Осуществляем лучший ремонт под ключ в Москве на доступных условиях, мы производим перепланировку помещений и выгодный ремонт квартир и офисов по низким расценкам. На нашем сайте Вы найдете статьи про штукатурку стен и электрику в квартире, хороший способ быстро заказать ремонт под ключ.

2009-03-09 13:49:07
Remtiles
Ни для кого уже не секрет, что грамотный подбор специалистов – залог успеха в любом начинании. Компания «Московский мастер» существует на рынке ремонтных услуг с 1999 года. У нашего предприятия масса преимуществ, которые за 8 лет успешной деятельности успело оценить множество клиентов.
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Вы купите понравившуюсь программу?
Да, если не найду Crack
19% (40)
С удовольствием если будут деньги
23% (48)
Нет, потомучто не знаю как заплатить
6% (12)
Нет, принципиально!
17% (37)
Нет, у меня никогда нет денег!
14% (29)
Да, если разработчик будет русским
9% (20)
Нет, не хочу париться с оплатой
13% (27)

Проголосовало: 213
День, когда Микрософт выпустит хоть что-то, что не будет тормозить, будет днем, когда они начнут производить автомобили
Рейтинг: 9.1/10 (25)
Посмотреть все анекдоты