Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СП_УМК 2012 каз для 5В070400.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.4 Mб
Скачать

8.1 Файлдар мен каталогтарды басқару Файлдарды құру және ашу

Файлдардың бардық типін құру және ашу үшін API Win32 – CreateFile жалғыз функциясы жұмыс жасайды. Қосымшада файлдан оқу, файлға жазу немесе екеуі де орындалу керек па екенін нұсқауға болады.

HANDLE CreateFile ( LPCTSTR lpszName, DWORD fdwAccess,

DWORD fdwShareMode, LPSECURITY_ATTRIBUTES lpsa,

DWORD fdwCreate, DWORD fdwAttrsAndFlags, HANDLE hTemplateFile)

Қайтарылатын мән: ашық файл объектісінің дескрипторы немесе сәтсіздік болған жағдайда - INVALID_HANDLE_FAILURE.

Өлшемдері

lpszName – ашу немесе құруды талап ететін файлдың аты, канал немесе басқа аталынған объекттен тұратын жолды нұсқағыш.

fdwAccess GENERIC_READ және GENERIC_WRITE мәндеріне сәйкес оқу немесе жазуға қатынайтын режимді анықтайды. Тұрақты шамалардың басқа аттары қолданылуы мүмкін. Бұл мәндерді “немесе” разрядтықтың көмегімен біріктіруге болады.

fdwShareMode – бұл “немесе” разрядтықпен төменде келтірілген мәндер бірлестігін біріктіру:

  • 0 – файлға бірлескен қатынау рұқсат етілмейді.

  • FILE_SHARE_READ – осы файлды параллельді оқуға аша алатын басқа процестер.

  • FILE_SHARE_WRITE – файлға параллельді жазу рұқсат етіледі.

Бұғаттау немесе басқа механизмдерді қолданғанда, бір файлдың параллельді модификациялануына программмист жол бермеуі керек.

lpsa SECURITY_ATTRIBUTES құрылымына нұсқайды.

fdwCreate жаңа файлды құру керектігін, бар файлды ауыстыруды және т.б. анықтайды. Бөлек мәндерді “немесе” разрядтықтың операторымен біріктіруге болады.

  • CREATE_NEW – егер нұсқалған файл бар болса, сәтсіздікпен аяқталады; болмаса жаңа файл құрылады.

  • CREATE_ALWAYS – бар файл жаңа файлмен ауыстырылады.

  • OPEN_EXISTING – сәтсіздік, егер файл жоқ болса.

  • OPEN_ALWAYS – егер файл жоқ болса, ол ашылады және құрылады.

  • TRUNCATE_ EXISTING – файлдың нольдік ұзындығы орнатылады. FdwAccess-те болмағанда GENERIC_WRITE рұқсаты болуы керек.

fdwAttrsAndFlags атрибуттар мен жалаушаларды анықтайды. 16 жалаушалар мен атрибуттар бар. Атрибуттар – бұл файлдың мінездемесі, бар жалауша ашылған кезде, олар есептелінбейді. Төменде кейбір маңызды атрибуттар мен жалаушалар келтірілген.

  • FILE_ATTRIBUTE_NORMAL – басқа атрибуттар орнатылмаған жағдайда ғана қолданылуы мүмкін (бірақ жалаушалар орнатылған болуы мүмкін).

  • FILE_ATTRIBUTE_ READONLY – қосымшалар файлға жаза да, не оны өшіре де алмайды.

  • FILE_FLAG_DELITE_ON_CLOSE – уақытша файлдарға пайдалы. Файлдың соңғы ашық дескрипторы жабылған кезде, ол өшіріледі.

  • FILE_FLAG_OVERLAPPED – асинхронды енгізу-шығару үшін маңызды. Windows-та ол әрқашан NULL мәніне ие болады, тізбекті енгізу-шығару құрылғыларынан басқа.

Тағы бірнеше қосымша жалаушалар файлды өзгерту (обработка) түрлерін анықтайды және Win32-ге файлдың тез жұмыс жасауын және бүтіндігін тексеруге (оптимизировать) рұқсат етеді.

  • FILE_FLAG_WRITE_THROUGH – аралық кэштер тез арада дикідегі файлдарға жазылады.

  • FILE_FLAG_NO_BUFFERING – пайдаланушы кеңістігінде буферлеу және кэштеу орындалмайды, деректер бағдарлама буферлеріне және олардан беріледі.

  • FILE_FLAG_RANDOM_ACCESS – файл ерікті рұқсат құруға арналған және Windows файлдың кэштеуін жүзеге алмасуға тырысады.

  • FILE_FLAG_SEQUENTIAL_SCAN – файл тізбекті рұқсат құруға арналған және Windows сәйкесінше кэштеуді жүзеге асырады. Бұл екі рұқсат құру режимі міндетті түрде емес.

hTemplateFile GENERIC_READ-тан ашылған файл дескрипторы, қайта құрылатын файлдың кеңейтілген атрибуттарын анықтайды және бұл жерде fdwAttrsAndFlags мәні есептелінбейді. Әдетте бұл өлшем NULL-ға тең. Бар файл ашылған кезде hTemplateFile өлшемі есептелінбейді. Осы өлшемнің көмегімен жаңа файл атрибутын бар файлдікі сияқты етіп жасауға болады.

Файлдардың жабылуы

Дескрипторлар жабылады және бір мүмкіншілігі көп функцияның барлық объекттілері үшін жүйелік ресурстар босатылады. Дескрипторлар жабылғанда, объект санағышы да бірлікке азаяды.

BOOL CloseHandle (HANDLE hObject)

Қайтарылатын мән: TRUE, егер функция сәтті орындалса; болмаса FALSE.

Файлдарды оқу.

BOOL ReadFile ( HANDLE hFile, LPVOID lpBuffer,

DWORD nNumberOfBytesToRead,

LPDWORD lpNumberOfBytesRead,

LPOVERLAPPED lpOverlapped)

Қайтарылатын мән: TRUE, егер оқу сәтті аяқталса.

Өлшемдер.

hfile – GENERIC_READ кіруімен (доступ) файл дескрипторы

lpBuffer кіріс деректерді алу үшін буфер жадысына нұсқайды.

nNumberOfBytesToRead – файлдан оқу керек байттар саны.

lpNumberOfBytesRead – ReadFile функциясымен оқылған байттар санына нұсқайды.

lpOverlapped OVERLAPPED құрылымына нұсқайды.

Файлға жазу.

BOOL WriteFile ( HANDLE hFile, CONST VOID *lpBuffer,

DWORD nNumberOfBytesToWrite,

LPDWORD lpNumberOfBytesWritten,

LPOVERLAPPED lpOverlapped)

Қайтарылатын мән: TRUE, егер функция сәтті аяқталса, болмаса FALSE.

Win32-де көптеген файлдарды басқару функциялары бар.

Файлды өшіру үшін:

BOOL DeleteFile (LPCTSTR lpszFileName)

Файл көшірмесін алу:

BOOL CopyFile ( LPCTSTR lpszExistingFile,

LPCTSTR lpszNewFile, BOOL fFaillfExists)

CopyFile аты бойынша анықталған бар файл көшірмесін алады және көшірмеге нұсқалған жаңа атта қосады. Файл жаңа атпен бар болса, алмастырылады, егер де fFailIfExists FALSE-қа тең болса.

Тағы екі функция ат өзгерту үшін қызмет көрсетеді. Бұл функциялар сонымен қатар каталогтармен жұмыс жасай алады.

BOOL MoveFile ( LPCTSTR lpszExisting, LPCTSTR lpszNew) ;

BOOL MoveFileEx ( LPCTSTR lpszExisting, LPCTSTR lpSzNew,

DWORD fdwFlags)

Егер жаңа файл бар болса, MoveFile сәтсіз аяқталады; бар файлдар үшін MoveFileEx қолдану керек.

Параметрлері

lpszExisting бар файлдың немесе каталогтың атын анықтайды.

lpszNew MoveFile-да болмауы керек жаңа файл немесе каталогтың атын анықтайды. Жаңа файл басқа файлдық жүйеде немесе басқа дискіде болуы мүмкін, бірақ жаңа каталогтар сол дискіде болуы керек. Егер осы өлшем NULL мәніне ие болса, онда бар файл өшіріледі.

fdwFlags келесі мүмкіндіктерді анықтайды:

  • MOVEFILE_REPLACE_EXISTING — бар файлды ауыстыру үшін қоданылады;

  • MOVEFILE_WRITETHROUGH — көшірілген файл аралық буферден дискіге жазылып болғанша функция басқаруды қайтармайтынына кепілдік береді;

  • MOVEFILE_COPY_ALLOWED — жаңа файл басқа бөлімде болғанда, ауысу CopyFile және DeleteFile орындалуымен іске асады;

  • MOVEFILE_DELAY_UNTIL_REBOOT — бұл movefile_copy_allowed-пен бірге қолданыла алмайтын жалауша, администраторлар үшін ғана рұқсат және файлдың ауысуын жүйені қайта іске қосқанша ұстайды.

Файлдардың ауысуы (атын өзгертуі) бірнеше маңызды шектеулермен байланысты.

  • Windows 9x-те MoveFileEx функциясы ұйымдастырылмағандықтан, оны CopyFile және DeleteFile тізбекшесімен алмастыру керек.

  • Файлдардың немесе каталогтардың аттарында алмастырып қою таңбалары рұқсат етілмейді. Нақты атты көрсетуге тура келеді.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]