Функции для выполнения операций с файлами, папками и дисками 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Функции для выполнения операций с файлами, папками и дисками



2.1. Для выполнения операций с файлами, папками и дисками в ОС Windows служат следующие системные функции Win32API:

CreateDirectory (

LPCTSTR lpPathName, // указатель на буфер, в котором записано наименование создаваемой директории

LPSECURITY_ATTRIBUTES lpSecurityAttributes //привилегии создаваемой директории

) – создание директории.

Пример:

result:=CreateDirectory('A:\TESTDIR', nil);//создаем директорию

if not result then

MessageDlg('Невозможно создать каталоги!'+#10#13+'Такие каталоги существуют или диск защищен от записи!',

mtConfirmation, [mbYes], 0)

else

begin

SetCurrentDirectory('A:\TESTDIR');

CreateDirectory('A:\TESTDIR\NEWDIR', nil);

end;

 

OpenFile (

LPCSTR lpFileName, // указатель на имя создаваемого файла

LPOFSTRUCT lpReOpenBuff,

UINT uStyle // действия и атрибуты

) - создание файла, используется также для открытия, записи, добавления и т.д. в зависимости от параметра uStyle.

Пример:

begin

MyFile:=OpenFile('A:\TESTDIR\File1.txt',ReOpenBuff,OF_CREATE);

buffer:='Текстовая строка';

count:=length(buffer);

_lwrite(MyFile,@Buffer[1],count); //записываем в файл

_lclose(Myfile);

end;

В данном примере использованы следующие функции:

_lwrite (

HFILE hFile, // хэндл файла

LPCSTR lpBuffer, // указатель на буфер, данные из которого записываются в файл

UINT uBytes //число байтов, записываемых в файл

) - запись в файл;

_close (

HFILE hFile // хэндл закрываемого файла

) – закрыть файл;

_lread (

HFILE hFile, // хэндл читаемого файла

LPVOID lpBuffer, // указатель на буфер, в который читать

UINT uBytes // количество байт, которые нужно читать

) – чтение файла;

 

_ llseek (

HFILE hFile, // хэндл файла

LONG lOffset, // количество байт, на которое сдвигается указатель файла

int iOrigin // с какого байта сдвигать

) - позиционирование файла;

Пример:

Myfile:=_lopen('A:\TESTDIR\File1.txt',OF_READ);//открываем файл

count:=8;

_llseek(MyFile,4,FILE_BEGIN); //позиционируем открытый файл на

5-й байт от начала файла

_lread(MyFile,@Buff,count); // читаем 8 байт

ReadFile(

HANDLE hFile, // хэндл читаемого файла

LPVOID lpBuffer, // указатель на буфер, в который читаем

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

LPDWORD lpNumberOfBytesRead,// буфер, в который будет записано

число прочитанных байт

LPOVERLAPPED lpOverlapped // при синхронном вводе значение NULL

) – чтение файла.

 

SetFilePointer(

HANDLE hFile, // хэндл позиционируемого файла

LONG lDistanceToMove, // число символов, на которое сдвигаем

PLONG lpDistanceToMoveHigh, // старшие 32 разряда числа символов,

на которое сдвигаем

DWORD dwMoveMethod // откуда сдвигать

) - позиционирование файла.

 

LockFile(

HANDLE hFile, // хэндл блокируемого файла

DWORD dwFileOffsetLow, // младшие 32 разряда

DWORD dwFileOffsetHigh,//старшие 32 смещения блокируемой части файла

DWORD nNumberOfBytesToLockLow,// младшие 32 разряда

DWORD nNumberOfBytesToLockHigh // старшие 32 разряда числа, определяющие

размер блокируемой части файла

) - блокирование файла.

UnlockFile(

HANDLE hFile, // хэндл блокируемого файла

DWORD dwFileOffsetLow, // младшие 32 разряда

DWORD dwFileOffsetHigh,//старшие 32 смещения блокируемой части файла

DWORD nNumberOfBytesToLockLow,// младшие 32 разряда

DWORD nNumberOfBytesToLockHigh // старшие 32 разряда числа,

определяющие размер блокируемой части файла

) - разблокирование файла.

Пример:

begin

//открываем файл

Мyfile:=_lopen('A:\TESTDIR\File1.txt',OF_READWRITE);

// читаем 4096 байт в buff

ReadFile(MyFile, buff, 4096, dwBytesRead, nil);

//позиционируем на конец файла

dwPos:= SetFilePointer(MyFile, 0, nil, FILE_END);

//блокирум часть файла

LockFile(MyFile, dwPos, 0, dwPos + dwBytesRead, 0);

buffer:='Дополнительная строка';

count:=length(buffer);

//записываем в конец файла то, что содержит переменная buffer

_lwrite(MyFile,@Buffer[1],count);

//разблокируем часть файла

UnlockFile(MyFile, dwPos, 0, dwPos + dwBytesRead, 0);

End;

SetFileAttributes(

LPCTSTR lpFileName, // имя файла

DWORD dwFileAttributes // устанавливаемые атрибуты

) – установка атрибутов файла.

Пример:

attributes:=FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_READONLY;

result:=SetFileAttributes('A:\TESTDIR\File1.txt',attributes);

 

MoveFile(

LPCTSTR lpExistingFileName,//указатель на буфер с именем файла

LPCTSTR lpNewFileName // указатель на буфер с новым именем файла

) – перемещение файла.

Пример:

result:=MoveFile('A:\TESTDIR\File2.txt','A:\TESTDIR\NEWDIR\File2.txt');

 

SetVolumeLabel(

LPCTSTR lpRootPathName,//корневой каталог

LPCTSTR lpVolumeName // метка

) - установка метки.

Пример:

result:=SetVolumeLabel('A:\'+#0,'LABEL');//устанавливаем метку дискеты



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 384; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.195.110 (0.008 с.)