Transcript
Page 1: Įvedimo ir išvedimo operacijos: darbas su failais

Įvedimo ir išvedimo operacijos: darbas su failais

Martynas Maciulevičius IT2

Page 2: Įvedimo ir išvedimo operacijos: darbas su failais

Turinys

• Failai „Windows“ sistemoje (GUI)• Failai „Windows API“• Paprastas failų IO• Memmory-Mapped failų IO• Asinchroninis failų IO• Handle

Page 3: Įvedimo ir išvedimo operacijos: darbas su failais

Failai „Windows“ sistemoje

• Failų tipai• Failų atributai

a.txt

Page 4: Įvedimo ir išvedimo operacijos: darbas su failais

Handle‘ai

• Handle – abstrakti nuoroda į resursą• Handle naudojimas Windows’uose

Le handle

Page 5: Įvedimo ir išvedimo operacijos: darbas su failais

Handle naudojimas

DWORD WINAPI GetFileSize( HANDLE hFile,

- LPDWORD lpFileSizeHigh );

Page 6: Įvedimo ir išvedimo operacijos: darbas su failais

Failų kūrimas

HANDLE WINAPI CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, //rwxDWORD dwShareMode, //rw0

- LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition, //->DWORD dwFlagsAndAttributes, //->>

- HANDLE hTemplateFile);

Page 7: Įvedimo ir išvedimo operacijos: darbas su failais

DWORD dwCreationDisposition

• CREATE_ALWAYS• CREATE_NEW• OPEN_ALWAYS• OPEN_EXISTING• TRUNCATE_EXISTING //(only with w)

Page 8: Įvedimo ir išvedimo operacijos: darbas su failais

DWORD dwFlagsAndAttributes

• FILE_ATTRIBUTE_HIDDEN• FILE_ATTRIBUTE_NORMAL• FILE_ATTRIBUTE_READONLY• FILE_ATTRIBUTE_TEMPORARY• ...

Page 9: Įvedimo ir išvedimo operacijos: darbas su failais

Failo skaitymas / rašymas

BOOL WINAPI WriteFile( //ReadFile

HANDLE hFile, LPCVOID lpBuffer, //

buferisDWORD nNumberOfBytesToWrite, // Read

- LPDWORD lpNumberOfBytesWritten,// Read- LPOVERLAPPED lpOverlapped);

Page 10: Įvedimo ir išvedimo operacijos: darbas su failais

Failo uždarymas

BOOL WINAPI CloseHandle(HANDLE hObject

);

Page 11: Įvedimo ir išvedimo operacijos: darbas su failais

Memmory-Mapped būdas

• Nuskaitomas pilnas failas• Reikšmės atmintyje pakeičiamos• Įrašoma• Gerai ar blogai?

Page 12: Įvedimo ir išvedimo operacijos: darbas su failais

Overlapped skaitymo būdas

• Sinchroninis: kai skaitoma paprastai // up• Asinchroninis: „užsakoma“ ir po nuskaitymo

gaunamas pranešimasBOOL WINAPI WriteFile( //ReadFile

HANDLE hFile, LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite,LPDWORD lpNumberOfBytesWritten,LPOVERLAPPED lpOverlapped

);

H ->

Page 13: Įvedimo ir išvedimo operacijos: darbas su failais

Klausimai


Recommended