在查看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系统进行封装来提高文件操作的效率。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9650775/viewspace-920832/,如需转载,请注明出处,否则将追究法律责任。

mysql函数封装_Mysql对文件操作的封装相关推荐

  1. 封装mysql数据库_快速掌握 Mysql数据库对文件操作的封装

    快速掌握 Mysql数据库对文件操作的封装 在查看Mysql对文件的操作中,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括open.close.seek等,在Win32下的文件和目录 ...

  2. mysql函数大全最小,MySQL函数一览_MySQL函数全部汇总

    前言 MySQL提供了众多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,从而更加灵活地满足不同用户的需求.本文将MySQL的函数分类并汇总,以便以后用到的时候可以随时 ...

  3. Allegro的PCB封装包含哪些文件,指定PCB封装库路径教程

    Allegro的PCB封装包含哪些文件,指定PCB封装库路径教程 第一步:Allegro的封装包含的文件有dra文件.psm文件.pad文件.device文件(如果是第三方网表才需要). 第二步:打开 ...

  4. 添加mysql 函数库_mysql函数创建

    如何使用MySQL提升权限 前不久网上公开了一个MySQL Func的漏洞,讲的是使用MySQL创建一个自定义的函数,然后通过这个函数来攻击服务器.最早看到相关的报道是在o-otik上,但是公布的是针 ...

  5. mysql函数示例_mysql函数备忘单和示例

    mysql函数示例 There are a ton of functions provided by MySQL and most of them are used extensively. I wi ...

  6. mysql文件结构体_MySQL InnoDB文件相关的三个重要结构体

    我们使用mysql常使用innodb存储引擎,它包括两种,一种是innobase,另外一种是innodb plugin.今天主要介绍innodb plugin的file I/O操作,innodb pl ...

  7. php中文件操作函数,php中常用文件操作函数介绍

    小编今天来给php初学者介绍php文件操作的常用函数使用方法总结,包括:文件读写,创建,查看文件属性,文件删除等等关于文件的操作. 在对一个文件进行访问之前,一般我们都需要判断文件是否存在,以免调用了 ...

  8. linux 文件操作函数,Linux下的文件操作函数及creat用法

    编写Linux应用程序要用到如下工具: (1)编译器:GCC GCC是Linux平台下最重要的开发工具,它是GNU的C和C++编译器,其基本用法为:gcc [options] [filenames]. ...

  9. PYDay6- 内置函数、验证码、文件操作、发送邮件函数

    1.内置函数 1.1Python的内置函数 abs() dict() help() min() setattr() all() dir() hex() next() slice() any() div ...

最新文章

  1. 快速目标检测--YOLO-LITE: A Real-Time Object Detection Algorithm Optimized for Non-GPU Computers
  2. Firefox下载自动保存
  3. mysql 连接 分组_详解MySQL中的分组查询与连接查询语句
  4. Qt安装和QML HelloWord程序
  5. Oracle 11g 中告警日志的位置
  6. 前端新手程序员不知道的 20个小技巧
  7. 元祖python_python---tuple元祖
  8. 虚拟路由器冗余协议-VRRP
  9. python是什么专业学的-自动化专业学习python需要到什么程度?
  10. HMC5883L校准
  11. CF1132D Stressful Training(优先队列+二分)
  12. 浅谈Android指纹识别技术
  13. TCP/IP中的链路层
  14. 应用回归分析(知识点整理)(四)——SPSS处理自相关(序列相关)
  15. 项目人生:成长与感悟
  16. 新出热门利器:碾压90%同类工具!
  17. 西安交通大学915考研编程笔记
  18. 我与刘强东的故事:他的1000亿和我的5000万
  19. 今日金融词汇---新股限购,是什么?
  20. 如何用人机料法环来分析产品质量?

热门文章

  1. Atitit.mybatis的测试  以及spring与mybatis在本项目中的集成配置说明
  2. nginx配置文件【转载】
  3. 字符串和数字之间的转化
  4. sql每一个join都要加on
  5. oralce10g中约束与列属性NULLABLE的关系
  6. Mongo Windows 基本使用入门
  7. 如何知道 CPU 是否支持虚拟化技术(VT)
  8. spark2.1:rdd.combineByKeyWithClassTag的用法示例
  9. 20162302 《程序设计与数据结构》第一周学习总结
  10. html、css 【珍藏】