共计 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 问一下细节