用C#如何读写配置文件?

用C#如何读写配置文件?,第1张

INI文件就是扩展名为"ini"的文件。

其一般形式如下:

[section1]// 配置节

//键名 //键值

keyword1 = valuel

keyword2 = value2

……

[section2]

keyword3 = value3

keyword4 = value4

在Windows系统中,INI文件是很多,最重要的就是"System.ini"、"System32.ini"和"Win.ini"。该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使应用程序和系统都把许多参数和初始化信息放进了注册表中。以及XML文件的国际标准化给INI文件又一次打击。

但在某些场合,INI文件还拥有其不可替代的地位。比如绿色软件的规定就是不向注册表和系统中填入新东西。对于软件需要储存的信息就需要存入到文件中了。XML虽然兼容性比较好,但对于仅仅保存几个自定义参数而言就显得大材小用了。这是就可以选择使用快速简单的储存方式:INI文件。

本文就来探讨一下C#是如何对INI进行读写 *** 作

主要思路是调用Win32 API。

1.引入命名空间

usingSystem.Runtime.InteropServices

2.声明(把一个Win32 API函数转成C#函数)

//声明INI文件的写 *** 作函数 WritePrivateProfileString()

[DllImport("kernel32")]

private static extern longWritePrivateProfileString(string section, string key, string val, stringfilePath)

//声明INI文件的读 *** 作函数 GetPrivateProfileString()

[DllImport("kernel32")]

private static extern intGetPrivateProfileString(string section, string key, string def, StringBuilderretVal, int size, string filePath)

3.函数

public void Writue(string section,string key, string value)

{

// section=配置节,key=键名,value=键值,path=路径

WritePrivateProfileString(section,key, value, sPath)

}

public string ReadValue(stringsection, string key)

{

// 每次从ini中读取多少字节

System.Text.StringBuilder temp =new System.Text.StringBuilder(255)

// section=配置节,key=键名,temp=上面,path=路径

GetPrivateProfileString(section,key, "", temp, 255, sPath)

returntemp.ToString()//注意类型的转换

}

到此基本功能已经实现了。下面我们将所有的代码重新整合一下:

namespace Library.File

{

public class Ini

{

// 声明INI文件的写 *** 作函数 WritePrivateProfileString()

[System.Runtime.InteropServices.DllImport("kernel32")]

private static extern longWritePrivateProfileString(string section, string key, string val, stringfilePath)

// 声明INI文件的读 *** 作函数 GetPrivateProfileString()

[System.Runtime.InteropServices.DllImport("kernel32")]

private static extern intGetPrivateProfileString(string section, string key, string def,System.Text.StringBuilder retVal, int size, string filePath)

private string sPath = null

public Ini(string path)

{

this.sPath = path

}

public void Writue(string section,string key, string value)

{

// section=配置节,key=键名,value=键值,path=路径

WritePrivateProfileString(section,key, value, sPath)

}

public string ReadValue(stringsection, string key)

{

// 每次从ini中读取多少字节

System.Text.StringBuilder temp =new System.Text.StringBuilder(255)

// section=配置节,key=键名,temp=上面,path=路径

GetPrivateProfileString(section,key, "", temp, 255, sPath)

return temp.ToString()

}

}

}

开始调用函数。

// 写入ini

Ini ini = newIni("C:/config.ini")

ini.Writue("Setting","key1", "HELLO WORLD!")

ini.Writue("Setting","key2", "HELLO CHINA!")

// 读取ini

Ini ini = newIni("C:/config.ini")

string str1 =ini.ReadValue("Setting", "key1")

MessageBox.Show(str1)

二,在一些小的应用中,有时候不需要使用数据困这样大规模的数据管理工具,也很少进行数据的查询、修改等 *** 作,而仅用文件来存储数据。这时就需要使用。net中的文件 *** 作对象,如file、streamReader、streamWriter等。

1,使用File对象 *** 作文件

System.IO.File类提供了一系类的静态办法,完成对晚间的常用 *** 作,如新建、删除、拷贝、移动等

2,使用StreamWriter写入文件

在System.IO空间中定义了一个文件写入器对象StreamWriter,使用它可以以一种特定的编码向输出流中(Stream)写入字符。

3,使用SteamReader读取文件

与streamWrite对应

Cmake

Cmake 有linux ,windows 多个平台版本,如图是windows下版本程序

更具一个简单多目录c项目,学下cmakelist.txt编写规范

根目录下cmakelist文件内容:

set(CMAKE_INSTALL_PREFIX):设置程序的安装目录,优先级比cmake命令参数设置高。

add_subdirectory(编译文件子目录)

libhello 目录下的cmakelist文件内容:

libhello 目录下的cmakelist文件内容:

6

查看编译后结果:

7

安装后目录结构:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12059595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存