.NET框架是怎样使用平台调用服务来写入和读取文件的

描述

在程序开发过程中,我们一般会用到配置文件来设定一些参数。常见的配置文件格式为 ini, xml, config等。 

INI 

.ini文件,通常为初始化文件,是用来存储程序配置信息的文本文件。 

[Login] 
#开启加密 0:不开启、1:开启 
open_ssl_certificate=0 

.NET 框架本身不支持 INI 文件,可以利用 Windows API方法使用平台调用服务来写入和读取文件。 

// 要写入的部分名称 - sectionName 
// 要设置的键名 - key 
// 要设置的值 - value 
// INI文件位置 - filepath 
// 读取是否成功 - result 
[DllImport("kernel32")] 
bool WritePrivateProfileString(string sectionName,string key,string value,string filepath); 

// 要读取的部分名称 - sectionName 
// 要读取的键名 - key 
// 如果键不存在返回的默认值 - default 
// 接收用作缓冲区的字符串 - ReturnedVal 
// 实际读取的值 - maxsize 
// INI文件位置 - filepath 
[DllImport("kernel32")] 
int GetPrivateProfileString(string sectionName,string key,string default,StringBuilder ReturnedVal,int maxsize,string filepath); 

一般会封装一个类来调用该API方法。 

public class ReadWriteINIFile{ 
   ... 
   public void WriteINI(string name, string key, string value) 
   { 
       WritePrivateProfileString(name, key, value, _path); 
   } 

   public string ReadINI(string name, string key) 
   { 
       StringBuilder sb = new StringBuilder(255); 
       int ini = GetPrivateProfileString(name, key, "", sb, 255, _path); 
       return sb.ToString(); 
   } 


CFG 

SharpConfig 是 .NET 的CFG/INI 配置文件操作组件,以文本或二进制格式读取,修改和保存配置文件和流。 

Configuration config = Configuration.LoadFromFile("login.cfg"); 
Section section = config["Login"]; 
// 读取参数 
bool isOpen = section["open_ssl_certificate"].GetValue(); 
// 修改参数 
section["open_ssl_certificate"].Value = false; 
Config 
在 App.config/web.config 文件中的 configSections 节点下配置 section 节点,.NET 提供自带的类型进行封装。 configSections节点必须为configuration下第一个节点。 

NameValue键值对 
 
定义一个静态属性的方法获取 Dictionary 格式的数据: 


///  
/// NameValueCollection 
///  
public static Dictionary NameValueConfigNode 

   get 
   { 
       NameValueCollection nvc = (NameValueCollection)ConfigurationManager.GetSection("NameValueConfigNode"); 
       Dictionary result = new Dictionary(); 
        foreach (string key in nvc.AllKeys) 
       {  
           result.Add(key, nvc[key]); 
       } 
       return result; 
   } 


Dictionary 
 
 
///  
/// Dictionary 
///  
public static Dictionary DictionaryConfigNode 

   get 
   { 
       IDictionary dict = (IDictionary)ConfigurationManager.GetSection("DictionaryConfigNode"); 
       Dictionary result = new Dictionary(); 
       foreach (string key in dict.Keys) 
       { 
           result.Add(key, dict[key].ToString()); 
       } 
       return result; 
   } 


SingTag 
   
 
///  
/// SingleTag 
///  
public static Dictionary SingleTagConfigNode 

   get 
   { 
       Hashtable dict = (Hashtable)ConfigurationManager.GetSection("SingleTagConfigNode"); 
       Dictionary result = new Dictionary(); 
       foreach (string key in dict.Keys) 
       { 
           result.Add(key, dict[key].ToString()); 
       } 
       return result; 
   } 


自定义配置文件 

如果配置文件很多,可以单独定义配置文件,然后在 App.config/Web.config 文件中声明。 

自定义文件 MyConfigFile.config 内容:    
 
XML 

XML文件常用于简化数据的存储和共享,它的设计宗旨是传输数据,而非显示数据。对于复杂不规则的配置信息也可以用XML文件进行存储。 

// 读取文件 
XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load("myfile.xml"); 
// 根节点 
var nodeRoot = xmlDoc.DocumentElement; 
// 创建新节点 
XmlElement studentNode = xmlDoc.CreateElement("student"); 
// 创建新节点的孩子节点 
XmlElement nameNode = xmlDoc.CreateElement("name"); 
// 建立父子关系 
studentNode.AppendChild(nameNode); 
nodeRoot.AppendChild(studentNode);



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分