0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至配饺子 来源:希夏普 作者:jqwang 2022-08-19 11:01 次阅读

在程序开发过程中,我们一般会用到配置文件来设定一些参数。常见的配置文件格式为 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);



审核编辑:刘清

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

    关注

    0

    文章

    123

    浏览量

    55734
  • .Net框架
    +关注

    关注

    0

    文章

    2

    浏览量

    5693
  • 存储IC
    +关注

    关注

    0

    文章

    8

    浏览量

    9818
收藏 人收藏

    评论

    相关推荐

    XML文件读取写入

    XML文件读取写入
    发表于 12-06 15:00

    怎样使用Labview调用打印机打印PDF文件

    怎样使用Labview调用打印机打印PDF文件怎样将字符串写入PDF文件?急求!
    发表于 05-29 19:46

    labview调用.net dll文件的问题

    labview8.6编写的程序中调用了C盘System32下面的一个.net类型的dll文件,电脑是32位的win7系统,此环境下运行一切正常。但是将程序放在64位win7系统上运行时,每次都会
    发表于 07-10 18:16

    请问有哪位吧友知道,当我调用.net时会降低硬件读取或者写入数据速率吗?

    `通过.net调用dll文件给硬件写入读取数据,但运行VI时发现程序放在笔记本上会崩溃,放在台式机上运行有时候会崩溃,不知道
    发表于 12-23 22:42

    怎么读取写入* .umd文件格式?

    我必须为.NET风格的TestExec SL 7.1.1创建一堆(500+)动作定义。使用动作定义编辑器手动执行此操作是不可能的。有没有办法从自己的应用程序读取写入* .umd文件
    发表于 04-17 15:22

    LabVIEW配置文件INI实现写入读取的分析

    和获取段名,读取键和写入键,为啥没有写入段呢?写入键包含写入段、写入键、
    发表于 07-10 08:24

    ADM106x EEPROM的块擦除、块读取和块写入

    本应用笔记说明如何对ADM106x EEPROM空间的单一页面(32字节)进行块擦除、块写入和块读取。本文中为便于说明,假设需擦除、写入读取的EEPROM范围为0xF8;0x00至0
    发表于 09-01 15:48 50次下载

    你知道Uboot中的net怎样的?

    你知道Uboot中的net怎样的?
    发表于 05-15 15:20 1019次阅读
    你知道Uboot中的<b class='flag-5'>net</b>是<b class='flag-5'>怎样</b>的?

    微软推出开源跨平台的机器学习框架 ML.NET

    微软最近推出了ML.NET,这是一个用于构建自定义机器学习库解决方案的框架
    的头像 发表于 05-22 14:17 2690次阅读

    LabVIEW的表格写入读取程序和工程文件免费下载

    编写的表格写入读取。 波形显示,如何滤掉小数部分。 用的宇电501写的实时显示。 本来想写518的,没时间了。就先这样,当个样例参考一下把。
    发表于 09-16 08:00 9次下载
    LabVIEW的表格<b class='flag-5'>写入</b>和<b class='flag-5'>读取</b>程序和工程<b class='flag-5'>文件</b>免费下载

    stm32程序升级SD卡读取hex文件写入flash

    stm32程序升级SD卡读取hex文件写入flash
    发表于 11-20 12:36 53次下载
    stm32程序升级SD卡<b class='flag-5'>读取</b>hex<b class='flag-5'>文件</b><b class='flag-5'>写入</b>flash

    使用闪存读取写入数据

    本教程演示了如何使用Menta OS提供的BlockDevice API使用Portenta H7的板载闪存来读取写入数据。由于内部存储器的大小有限,我们还将...
    发表于 01-25 18:25 0次下载
    使用闪存<b class='flag-5'>读取</b>和<b class='flag-5'>写入</b>数据

    python文件读取

    文件读取的步骤: 打开文本文件对象 写入数据 文件读取一般使用如下三个方法: read([si
    的头像 发表于 06-21 17:23 1017次阅读
    python<b class='flag-5'>文件</b>的<b class='flag-5'>读取</b>

    如何使用Python和pandas库读取写入文件

    在本文中,我将介绍如何使用 Python 和 pandas 库读取写入文件。 1、安装 pip install pandas 2、读取 import pandas as pd df
    的头像 发表于 09-11 17:52 795次阅读

    如何使用Python读取写入Word文件

    01 准备 Python 是一种通用编程语言,也可以用于处理 Microsoft Word 文件。在本文中,我将向你介绍如何使用 Python 和 python-docx 库读取写入和操作
    的头像 发表于 09-27 17:03 1462次阅读