共計 1279 個字符,預計需要花費 4 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章主要講解了“Mysql 對文件操作的封裝方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“Mysql 對文件操作的封裝方法”吧!
在查看 Mysql 對文件的操作中發現,它在不同的操作系統上對文件的操作,除了使用標準 C 運行庫函數,包括 open、close、seek 等,在 Win32 下的文件和目錄操作函數使用了 CreatFile、CloseHandl、SetFilePointer 等,不明白為什么對文件的操作要封裝出兩套函數。
查看了相關資料,其實使用 API 和標準庫函數都可以生成文本文件和二進制文件,在這點上沒有區別。同 read() 對應的是 ReadFile,同 write() 對應的是 WriteFile,同 seek() 對應的是 SetFilePointer,同 close 對應的是 CloseHandle。這兩套函數都可以使用。但是 Win
32 系統把文件的概念進行了擴展。無論是文件、通信設備、命名管道、郵件槽、磁盤、還是控制臺,都是用 API 函數 CreateFile 來打開或創建的。該函數的聲明為:
HANDLE
CreateFile(
LPCTSTR lpFileName, // 文件名
DWORD dwDesiredAccess, // 訪問模式
DWORD dwShareMode, // 共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
// 通常為 NULL
DWORD dwCreationDistribution, // 創建方式
DWORD
dwFlagsAndAttributes, // 文件屬性和標志
HANDLE hTemplateFile // 臨時文件的句柄,通常為 NULL
);
如果調用成功,那么該函數返回文件的句柄,如果調用失敗,則函數返回 INVALID_HANDLE_VALUE。
在用 ReadFile 和 WriteFile 讀寫時,既可以同步執行,也可以異步執行。ReadFile 和 WriteFile 函數是否為執行異步操作是由 CreateFile 函數決定的。如果在調用 CreateFile 創建句柄時指定了 FILE_FLAG_OVERLAPPED 標志,那么調用 ReadFile 和 WriteFile 對該句柄進行的讀寫操作就是異步的,如果未指定異步標志,則讀寫操作是同步的。在同步執行時,函數直到操作完成后才返回。這意味著在同步執行時線程會被阻塞,從而導致效率下降。在異步執行時,即使操作還未完成,調用的函數也會立即返回。費時的 I / O 操作在后臺進行,這樣線程就可以干別的事情。這樣可以大大的提高效率。這一點是值得我們學習和借鑒的,對于我們在文件的操作方面也可以對 win32 系統進行封裝來提高文件操作的效率。
感謝各位的閱讀,以上就是“Mysql 對文件操作的封裝方法”的內容了,經過本文的學習后,相信大家對 Mysql 對文件操作的封裝方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!
向 AI 問一下細節