详细讲解MySQL数据库对文件操作的封装
作者:10933 发布时间:2008-12-17 16:08:00
在查看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系统进行封装来提高文件操作的效率。
猜你喜欢
- 本文试图从iPhone的角度结合一些iPhone平台项目的设计经验提炼出iPhone平台的一些优秀设计思路,以供大家在做移动互联网设备设计时
- 简介CSS Sprites并没有一个确定的中文翻译,通常被意译为“CSS图像拼合”或“CSS贴图定位”。CSS Sprites并不是一门新技
- 这份代码不是那种时间没有改变也输出innerHTML的高消耗代码。innerHTML和style的改变是非常消耗游览器性能的,如果你将来希望
- ▲ SHOW执行下面这个命令可以了解服务器的运行状态mysql >show status;该命令将显示出一长列状态
- 在计算机中数据有两种特征:类型和长度。所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类。在SQL Server 中每个变量、参数
- 在创建SQL Server 2000 故障转移群集之前,必须配置 Microsoft 群集服务 (MSCS) 并使用 Microsoft W
- 很多网站都有“浏览历史”这个功能,通常都是显示在页面的一侧,特别是一些购物网站,这个功能会让用户使用网站的体验好一些;例如当当网或淘宝网都有
- 1.比喻 如同Windows用桌面、文件夹、垃圾筒来比喻计算机的*作,Web的设计也是如此。善于利用明确、抽象或概念化的比喻ICON来表达各
- 在mysql安装目录的bin下, 运行mysql --install MYSQL5查看服务中, 会多一个MYSQL5的服务XAMPP的控制面
- IE 开发团队更改了 IE8 的 User-agent ,更改的部分信息如下:IE8 on Windows Vista (Compatibi
- 1.触发器概述触发器是SQL Server数据库应用中一个重要工具,是一种特殊类型的存储过程,应用非常广泛。一般存储过程主要通过存储过程名而
- 由于新云CMS系统,网站底部“版权信息”字段在数据库中是“文本”类型,有250个字符的限制。想在这里给加网站统计代码,因为字数限制的原因,就
- 有时候很多朋友访问自己的asp或php等程序页面时出现一些错误,就是页面无法显示也没有详细的错误信息,就算iis中开启了显示详细的错误也不能
- 本节为读者讲解如何利用ADO.NET本身的参数对象和存储过程技术防止注入攻击,以达到用户界面输入与原始SQL的分离,使黑客无法拼接SQL语句
- 很多年以前,面对上古时代遗留的 HTML 发出的腐臭,我捂住鼻子唉声叹气。刚练熟 web 标准的我,恨不得寝其尸食其肉,把一切推翻重来。但经
- 写在前面的话:此篇还是asp相关的,相信玩ASP的都有这个感觉,当数据有5万多条时-------just like音乐网,要调用最新的10条
- SQL Server 2000安装问题集锦1、先把SQL Server卸载(卸载不掉也没有关系,继续下面的操作)2、把Microsoft S
- 当管理SQL Server内在的帐户和密码时,我们很容易认为这一切都相当的安全。但实际上并非如此。在这里,我们列出了一些对于SQL Serv
- 一、从外部文档中粘贴时,如果只要文字而不想要其格式,可以使用“Edit→paste as text”命令,不要直接用Ctrl+V。二、当有浏
- 代码如下:declare @cmd nvarchar(4000) set @cmd = N'exec [?].sys.sp_chan