INI文件的读取
来源:互联网 发布:英语培训机构知乎 编辑:程序博客网 时间:2024/04/24 06:48
6.2.3 INI文件的读取
INI文件是Windows系统最早采用的文本文件格式,比如:在C:驱动器根目录中往往都会存在着一个隐藏的boot.ini文件,它用来定义计算机启动时显示的系统菜单。笔者的boot.ini文件如下所示:
- [boot loader]
- timeout=30
- default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
- [operating systems]
- multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP
- Professional" /noexecute=optin /fastdetect
可以看出,INI文件格式有点类似于properties文件,但是它多出一个Section(节)的概念。一个INI 文件可以分为几个 Section,每个 Section 的名称用"[]"括起来,在一个 Section中,就包含有key=value组成的多条属性值。如上所示的boot.ini中,它就包含两个Section,一个是[boot loader],另外一个是[operating systems]。
Windows 对INI文件操作的 API中,有一部分是对 win.ini 操作的,另一部分是对用户自定义的INI文件操作的,这种分类如表6-11所示。
表6-11 文本操作CRT函数
函数
含义
GetProfileInt
从win.ini文件指定Section中读取一个int属性值
GetProfileSection
从win.ini文件指定Section中获取所有的属性
GetProfileString
从win.ini文件指定Section中读取一个文本属性值
WriteProfileSection
向win.ini文件写入一个Section
WriteProfileString
向win.ini文件指定Section中写入一个文本属性值
GetPrivateProfileInt
从指定的INI文件的Section中读取一个int属性值
GetPrivateProfileSection
从指定的INI文件中读取指定的Section
GetPrivateProfileSectionNames
从指定的INI文件中获取所有的Section名
GetPrivateProfileString
从指定的INI文件的Section中读取一个文本属性值
GetPrivateProfileStruct
从指定的INI文件的Section中读取一个结构属性值
WritePrivateProfileSection
向指定的INI文件写入一个Section
WritePrivateProfileString
向指定的INI文件的Section中写入一个文本属性值
WritePrivateProfileStruct
向指定的INI文件的Section中写入一个结构属性值
可以看到,这些函数主要包括两类:包含private的用户INI文件操作和不包含private的Win.ini文件操作。自从有了Windows注册表,我们很少再依赖于Win.ini文件来读取和写入配置信息,因此我们常常使用PrivateXXX函数族来操作指定的ini文件。
现在动手
接下来,我们使用Win32 API读出boot.ini文件的内容。
【程序 6-3】使用Windows API读取INI文件
- 01 #include "stdafx.h"
- 02
- 03 int _tmain()
- 04 {
- 05 TCHAR buffer[256];
- 06 TCHAR path[] = _T("c:\\boot.ini");
- 07 int len = GetPrivateProfileSectionNames(buffer, sizeof(buffer), path);
- 08
- 09 TCHAR *names = buffer;
- 10 TCHAR *end = names + len;
- 11
- 12 //返回的sectionNames以null分隔
- 13
- 14 while(names < end)
- 15 {
- 16 CString name = names;
- 17 _tprintf(_T("======%s======\r\n"), name);
- 18 names += name.GetLength();
- 19 names ++;
- 20
- 21 //获取该Section下面所有的属性
- 22 TCHAR buffer2[1024];
- 23 len = GetPrivateProfileSection(name, buffer2, sizeof(buffer2), path);
- 24 //遍历所有行
- 25 TCHAR *lines = buffer2;
- 26 while(*lines)
- 27 {
- 28 CString line = lines;
- 29 _tprintf(_T("\t%s\r\n"), line);
- 30
- 31 lines += line.GetLength();
- 32 lines ++;
- 33 }
- 34 }
- 35
- 36 return 0;37 }
运行结果如图6-11所示。
(点击查看大图)图6-11 运行结果光盘导读
该项目对应于光盘中的目录"\ch06\BootIniReader"。
- Ini文件的读取
- INI文件的读取
- INI文件的读取
- ini文件的读取
- ini文件的读取操作
- Java 读取 INI 文件的示例
- C读取ini文件的例子
- VB读取ini文件的函数
- 读取和写入Windows的INI文件
- 读取 INI 文件的模块儿
- MFC读取.ini文件的方法
- VC++对ini文件的读取
- ASP读取ini文件的实现方法
- Win32环境下的ini文件读取
- INI 文件的创建/修改/读取
- 读取保存密码的ini文件
- C++ ini文件的读取与写入
- MFC .ini文件的读取与写入
- 计算机广告学目录
- 在VS2012中调用动态链接库
- c语言学习笔记总结
- 继承关系的类初始化和实例化的顺序
- 第二周作业
- INI文件的读取
- CareerCup How would you implement a secondary sorting
- 基金产品质量线形同虚设
- linux命令
- ThreadLocal
- fimc0硬件格式转换处理usb camera图像数据
- struts1---文件下载
- PHP 冒泡算法示例
- 使用 ROW_NUMBER OVER() 删除相同记录