130 likes | 322 Views
Įvedimo ir išvedimo operacijos: darbas su failais. Martynas Maciulevičius IT2. Turinys. Failai „Windows“ sistemoje (GUI) Failai „Windows API“ Paprastas failų IO Memmory-Mapped failų IO Asinchroninis failų IO Handle. Failai „Windows“ sistemoje. Failų tipai Failų atributai a . txt.
E N D
Įvedimo ir išvedimo operacijos: darbas su failais Martynas Maciulevičius IT2
Turinys • Failai „Windows“ sistemoje (GUI) • Failai „Windows API“ • Paprastas failų IO • Memmory-Mapped failų IO • Asinchroninis failų IO • Handle
Failai „Windows“ sistemoje • Failų tipai • Failų atributai a.txt
Handle‘ai • Handle – abstrakti nuoroda į resursą • Handle naudojimas Windows’uose Le handle
Handle naudojimas DWORD WINAPIGetFileSize( HANDLEhFile, -LPDWORDlpFileSizeHigh );
Failų kūrimas HANDLE WINAPICreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, //rwx DWORD dwShareMode, //rw0 - LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, //-> DWORD dwFlagsAndAttributes, //->> - HANDLE hTemplateFile );
DWORD dwCreationDisposition • CREATE_ALWAYS • CREATE_NEW • OPEN_ALWAYS • OPEN_EXISTING • TRUNCATE_EXISTING //(only with w)
DWORD dwFlagsAndAttributes • FILE_ATTRIBUTE_HIDDEN • FILE_ATTRIBUTE_NORMAL • FILE_ATTRIBUTE_READONLY • FILE_ATTRIBUTE_TEMPORARY • ...
Failo skaitymas / rašymas BOOL WINAPI WriteFile( //ReadFile HANDLE hFile, LPCVOID lpBuffer, // buferis DWORD nNumberOfBytesToWrite, // Read - LPDWORD lpNumberOfBytesWritten,// Read - LPOVERLAPPED lpOverlapped );
Failo uždarymas BOOL WINAPI CloseHandle( HANDLEhObject );
Memmory-Mapped būdas • Nuskaitomas pilnas failas • Reikšmės atmintyje pakeičiamos • Įrašoma • Gerai ar blogai?
Overlapped skaitymo būdas • Sinchroninis: kai skaitoma paprastai // up • Asinchroninis: „užsakoma“ ir po nuskaitymo gaunamas pranešimas • BOOL WINAPI WriteFile( //ReadFile HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, • LPOVERLAPPED lpOverlapped ); H ->