`
swimmer2000
  • 浏览: 36096 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

几种文件操作函数库的特点

阅读更多

在我们想进行文件操作时,有时往往不知道该从何下手,因为有太多选择了。

首先,我们可以采用喜之郎CC的C语言函数库里(C Run-Time Library)提供的函数,来打开文件:

FILE *fopen(
const char *filename,
const char *mode
);

关于fopen函数的具体的解释敬请到MSDN上查找,除此之外,Windows还提供了另外的选择,我们可以使用Win32 API函数进行同样的操作。脾气暴躁的同学可能就会问了,微软为什么要这么干呢?是不是吃饱了撑了。这个问题还真不好回答,我也不知道微软这么干究竟是为了什么,但是看到下面API函数CreateFile的声明,同学们马上就能想到:多参数函数虽然给使用者带来了不少麻烦,但这同时也是功能强大的标志。使用Windows提供的API,我们可以更详细指定文件的共享模式和安全属性等选项,但较C的库函数,有一个致命的缺点,乃是不易移植到其它操作系统。CreateFile的函数原型:

HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);

上面说到Win32 API参数多,往往难于使用,针对这种情况,盖茨和他的Microsoft怎能坐视不管?MFC就是为了降低使用者门槛而推出,以MFC中封装了文件操作的CFile类为例。CFile成员函数的接口较之raw API是非常的清爽,内底里,CFile最终也还是调用Win32 API函数,MFC只不过是裹了蜜糖的Win32 API(当然,提供的应用程序框架也很强大)。空口无凭,以代码为证:

// In FILECORE.CPP
BOOL CFile::Open(LPCTSTR lpszFileName, UINT nOpenFlags,
CFileException* pException)
{
// ASSERT this ASSERT that
// Set parameter
// ......
// attempt file creation
HANDLE hFile = ::CreateFile(lpszFileName, dwAccess, dwShareMode, &sa,
dwCreateFlag, FILE_ATTRIBUTE_NORMAL, NULL);
// .......

return TRUE;
}

回到文章开头的问题,我们该选择函数库呢?如果你要跨平台,我觉得你最好选择使用CRT里的函数;如果是在Windows上跑的程序非C++程序,老实的选择Win32 API吧;而如果你的C++程序已经和MFC产生了纠葛(由MFC APPWizard产生),那文件操作时使用MFC中的类则是顺理成章的事情。

分享到:
评论

相关推荐

    皮肤控件研究文档,破解后的库文件,皮肤设计工具使用教程

    可以通过以下几种方式来判断界面库类产品的效率:  拖拽窗口,观察是否有明显的停顿感。 可在一个系统下,找一些知名软件比较,如QQ/MSN等。如果有明显差异,则说明界面库在界面的绘制等方面存在欠缺。  拖拽...

    WinCE脚本解析程序(写写文本就能做很多意想不到的事情)

    作了一些特殊处理以同时支持WinCE5和WinCE6,主要实现shell中的功能,提供的各种操作涉及到文件系统、窗口管理、进程管理和流程控制几个方面,通过解析配置文件内容来执行相应的操作,属于一种脚本解析程序。...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    56.7 几种循环的比较 79 6.8 break 和 continue语句 79 6.8.1 break 语句 79 6.8.2 continue 语句 80 6.9 程序举例 81 7 数组 7.1 一维数组的定义和引用 82 7.1.1 一维数组的定义方式 82 7.1.2 一维数组元素的引用 ...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    56.7 几种循环的比较 79 6.8 break 和 continue语句 79 6.8.1 break 语句 79 6.8.2 continue 语句 80 6.9 程序举例 81 7 数组 7.1 一维数组的定义和引用 82 7.1.1 一维数组的定义方式 82 7.1.2 一维数组元素的引用 ...

    精通matlab7.0混合编程.

    8.5.2 visual c++工程中调用matlab数学函数库的环境设置 8.6 小结.. 第9章 通过matlab add-in实现混合编程 9.1 matlab add-in简介 9.2 matlab add-in安装和在visual c++中的环境设置 9.3 通过matlab add-in生成独立...

    CentOS.5系统管理-part1

    3.4.2 文件操作命令 3.4.3 文件打包压缩命令 3.5 文本处理命令 3.6 信息显示命令 3.7 基本网络操作命令 第4章 Linux字符界面操作进阶 4.1 提高工作效率 4.1.1 命令行补全 4.1.2 命令历史 4.1.3 命令别名 4.2 重定向...

    CETool(最新2013.8)

    作了一些特殊处理以同时支持WinCE5和WinCE6,主要实现shell中的功能,提供的各种操作涉及到文件系统、窗口管理、进程管理和流程控制几个方面,通过解析配置文件内容来执行相应的操作,属于一种脚本解析程序。...

    JAVA上百实例源码以及开源项目

    摘要:Java源码,文件操作,数据压缩,文件传输  Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、...

    程序设计教程 陈家骏等编著

    10.3.1 基于I/O函数库的文件I/O 314 10.3.2 基于I/O类库的文件I/O 320 10.4 字符串I/O 327 10.5 小结 328 10.6 习题 329 第11章 异常处理 330 11.1 异常的概念 330 11.2 C++异常处理机制 331 11.2.1 try、throw以及...

    Matrix C++类

    等数种文件格式; 4.调试版本具有全面的dump和trace语句,便于调试; 5.操作全面,运算速度较快,本人的程序里用到500阶的,很快,比python的numpy库快; 6.基于double值,适用于科学计算,不是模板类; 7.需要特别...

    Windows应用程序捆绑核心编程光盘代码

    7.2 常见的几种创建进程的方法 148 7.2.1 使用WinExec() 函数 148 7.2.2 使用ShellExecute()和ShellExecuteEx()函数 149 7.2.3 使用CreateProcess()函数 151 7.2.4 使用OLE激活服务程序 154 7.3 如何获得进程...

    Tcl_TK编程权威指南pdf

    该函数库实现了基本的解释器,它有一套实现变量、流程控制和过程的核心脚本命令,而且还有一组用来存取操作系统服务以运行其他程序、存取文件系统和使用网络套接字的命令。Tcl和Tk提供了一台可以在UNIX、Windows和...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    19.1.5 其他几种迭代器 565 19.2 容器 566 19.2.1 连续容器 566 19.2.2 容器适配器栈和队列 570 19.2.3 关联容器集合和映射 572 19.2.4 效率 575 19.3 泛型算法 576 19.3.1 运行时间和大O记法 576 19.3.2 ...

    vc++ 开发实例源码包

    内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库。 sdk(界面库) RINGSDK包含界面库和图象库。 绘MFC基本控件 ) 如题。 ...

    JAVA上百实例源码以及开源项目源代码

    摘要:Java源码,文件操作,数据压缩,文件传输  Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、...

    php网络开发完全手册

    6.2 PHP中文件操作详解 93 6.2.1 打开文件 93 6.2.2 关闭文件 94 6.2.3 读取文件 94 6.2.4 写入文件 95 6.2.5 删除文件 96 6.2.6 复制文件 96 6.3 本地文件的操作实例——小型留言本 96 6.3.1 留言发表模块 96 6.3.2...

    传智播客扫地僧视频讲义源码

    09_文件操作api基本概念 10_按照字符读写文件 11_按照行方式操作文件 12_按照块的方式操作文件 13_中午课程回顾 14_配置文件读写案例功能介绍 15_配置文件读写案例_接口设计 16_配置文件读写案例_集成框架搭建 17_...

    GNU-Makefile中文手册-Ver3.8.pdf

    对“info make”的翻译整理,不是一个纯粹的...中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文 件、如何最后产生我们想要得可执行文件。尽管看起来可能是很复杂的事情,但是为工 程编写

Global site tag (gtag.js) - Google Analytics