Mysql对文件操作的封装

原创 2005年05月30日 02:02:00
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系统进行封装来提高文件操作的效率。

C++编程思想3-利用C++进行文件操作封装C函数

我们知道在C语言中许多文件操作的函数 很零散,在使用的时候不得不四处查找 ,我们是否能向C++中 的   CFile类等一样封装我们自己的文件操作呢?当然可以,我们这里我封装的是 C语言的文件操作函数...
  • yue7603835
  • yue7603835
  • 2011年12月30日 11:39
  • 3164

C++ 读写文件的简单封装

说道文件读写,有很多方法,
  • chinabinlang
  • chinabinlang
  • 2014年07月14日 11:40
  • 2438

C#封装的常用文件操作类实例

using System; using System.Text; using System.Web; using System.IO; namespace DotNet.Utilities { p...
  • cai20142932
  • cai20142932
  • 2017年07月21日 22:02
  • 393

C++ 封装文件操作类

暂时封装一个文件输出类,平时要用的时候方便一些 #include #include using namespace std; class fileopr { string m_filep...
  • Vis_Stu
  • Vis_Stu
  • 2017年09月10日 18:22
  • 341

对mysql的简单封装

DataBase.h #include #include class CDataBase { public: int open(char*host, char*user, char*pw...
  • bladeandmaster88
  • bladeandmaster88
  • 2016年12月06日 08:46
  • 235

【java源码】对mysql数据库的封装(精华版)

数据库连接是件很麻烦的事,特别是封装数据库,让我们java编程不再有烦恼
  • u012220174
  • u012220174
  • 2013年11月15日 17:18
  • 2915

Node 封装 MySQL 操作的思路

环境搭建
  • lightyaoyuan
  • lightyaoyuan
  • 2016年10月29日 00:27
  • 586

mysql数据库对文件操作的封装

网页内容已不存在。
  • Labber
  • Labber
  • 2008年03月14日 02:40
  • 274

Java文件操作类封装

java文件操作类,简单封装,封装了复制,剪切,删除目录,压缩解压zip,等常用功能 package com.wiker; import java.io.BufferedInputStream...
  • yangwei19680827
  • yangwei19680827
  • 2013年11月11日 14:36
  • 3040

封装Android文件基本操作方法

Android最基本的数据存储方式,所有数据原封不动地保存至文件中,适合存储简单的文本数据或是二进制数据。 所有文件默认存储至/data/data//files/目录下。 openFileOutp...
  • cql_2014
  • cql_2014
  • 2015年10月28日 18:12
  • 461
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mysql对文件操作的封装
举报原因:
原因补充:

(最多只允许输入30个字)