0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

.NET框架是怎樣使用平臺(tái)調(diào)用服務(wù)來(lái)寫(xiě)入和讀取文件的

冬至配餃子 ? 來(lái)源:希夏普 ? 作者:jqwang ? 2022-08-19 11:01 ? 次閱讀

在程序開(kāi)發(fā)過(guò)程中,我們一般會(huì)用到配置文件來(lái)設(shè)定一些參數(shù)。常見(jiàn)的配置文件格式為 ini, xml, config等。

INI

.ini文件,通常為初始化文件,是用來(lái)存儲(chǔ)程序配置信息的文本文件。

[Login]
#開(kāi)啟加密 0:不開(kāi)啟、1:開(kāi)啟
open_ssl_certificate=0

.NET 框架本身不支持 INI 文件,可以利用 Windows API方法使用平臺(tái)調(diào)用服務(wù)來(lái)寫(xiě)入和讀取文件。

// 要寫(xiě)入的部分名稱 - sectionName
// 要設(shè)置的鍵名 - key
// 要設(shè)置的值 - value
// INI文件位置 - filepath
// 讀取是否成功 - result
[DllImport("kernel32")]
bool WritePrivateProfileString(string sectionName,string key,string value,string filepath);

// 要讀取的部分名稱 - sectionName
// 要讀取的鍵名 - key
// 如果鍵不存在返回的默認(rèn)值 - default
// 接收用作緩沖區(qū)的字符串 - ReturnedVal
// 實(shí)際讀取的值 - maxsize
// INI文件位置 - filepath
[DllImport("kernel32")]
int GetPrivateProfileString(string sectionName,string key,string default,StringBuilder ReturnedVal,int maxsize,string filepath);

一般會(huì)封裝一個(gè)類來(lái)調(diào)用該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 配置文件操作組件,以文本或二進(jìn)制格式讀取,修改和保存配置文件和流。

Configuration config = Configuration.LoadFromFile("login.cfg");
Section section = config["Login"];
// 讀取參數(shù)
bool isOpen = section["open_ssl_certificate"].GetValue();
// 修改參數(shù)
section["open_ssl_certificate"].Value = false;
Config
在 App.config/web.config 文件中的 configSections 節(jié)點(diǎn)下配置 section 節(jié)點(diǎn),.NET 提供自帶的類型進(jìn)行封裝。 configSections節(jié)點(diǎn)必須為configuration下第一個(gè)節(jié)點(diǎn)。

NameValue鍵值對(duì)

定義一個(gè)靜態(tài)屬性的方法獲取 Dictionary 格式的數(shù)據(jù):


///
/// 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;
}
}

自定義配置文件

如果配置文件很多,可以單獨(dú)定義配置文件,然后在 App.config/Web.config 文件中聲明。

自定義文件 MyConfigFile.config 內(nèi)容:

XML

XML文件常用于簡(jiǎn)化數(shù)據(jù)的存儲(chǔ)和共享,它的設(shè)計(jì)宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)。對(duì)于復(fù)雜不規(guī)則的配置信息也可以用XML文件進(jìn)行存儲(chǔ)。

// 讀取文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("myfile.xml");
// 根節(jié)點(diǎn)
var nodeRoot = xmlDoc.DocumentElement;
// 創(chuàng)建新節(jié)點(diǎn)
XmlElement studentNode = xmlDoc.CreateElement("student");
// 創(chuàng)建新節(jié)點(diǎn)的孩子節(jié)點(diǎn)
XmlElement nameNode = xmlDoc.CreateElement("name");
// 建立父子關(guān)系
studentNode.AppendChild(nameNode);
nodeRoot.AppendChild(studentNode);



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • net
    net
    +關(guān)注

    關(guān)注

    0

    文章

    124

    瀏覽量

    56050
  • .Net框架
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5693
  • 存儲(chǔ)IC
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    9832
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    XML文件讀取寫(xiě)入

    XML文件讀取寫(xiě)入
    發(fā)表于 12-06 15:00

    怎樣使用Labview調(diào)用打印機(jī)打印PDF文件

    怎樣使用Labview調(diào)用打印機(jī)打印PDF文件?怎樣將字符串寫(xiě)入PDF文件?急求!
    發(fā)表于 05-29 19:46

    labview調(diào)用.net dll文件的問(wèn)題

    labview8.6編寫(xiě)的程序中調(diào)用了C盤(pán)System32下面的一個(gè).net類型的dll文件,電腦是32位的win7系統(tǒng),此環(huán)境下運(yùn)行一切正常。但是將程序放在64位win7系統(tǒng)上運(yùn)行時(shí),每次都會(huì)
    發(fā)表于 07-10 18:16

    請(qǐng)問(wèn)有哪位吧友知道,當(dāng)我調(diào)用.net時(shí)會(huì)降低硬件讀取或者寫(xiě)入數(shù)據(jù)速率嗎?

    `通過(guò).net調(diào)用dll文件給硬件寫(xiě)入讀取數(shù)據(jù),但運(yùn)行VI時(shí)發(fā)現(xiàn)程序放在筆記本上會(huì)崩潰,放在臺(tái)式機(jī)上運(yùn)行有時(shí)候會(huì)崩潰,不知道
    發(fā)表于 12-23 22:42

    怎么讀取寫(xiě)入* .umd文件格式?

    我必須為.NET風(fēng)格的TestExec SL 7.1.1創(chuàng)建一堆(500+)動(dòng)作定義。使用動(dòng)作定義編輯器手動(dòng)執(zhí)行此操作是不可能的。有沒(méi)有辦法從自己的應(yīng)用程序讀取寫(xiě)入* .umd文件
    發(fā)表于 04-17 15:22

    LabVIEW配置文件INI實(shí)現(xiàn)寫(xiě)入讀取的分析

    和獲取段名,讀取鍵和寫(xiě)入鍵,為啥沒(méi)有寫(xiě)入段呢?寫(xiě)入鍵包含寫(xiě)入段、寫(xiě)入鍵、
    發(fā)表于 07-10 08:24

    LabVIEW串口寫(xiě)入讀取詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是LabVIEW串口寫(xiě)入讀取詳細(xì)資料概述。
    發(fā)表于 01-02 08:00 ?39次下載
    LabVIEW串口<b class='flag-5'>寫(xiě)入</b>和<b class='flag-5'>讀取</b>詳細(xì)資料概述

    你知道Uboot中的net怎樣的?

    你知道Uboot中的net怎樣的?
    發(fā)表于 05-15 15:20 ?1111次閱讀
    你知道Uboot中的<b class='flag-5'>net</b>是<b class='flag-5'>怎樣</b>的?

    .NET應(yīng)用程序可以直接調(diào)用WebAssembly模塊了

    WebAssembly Runtime現(xiàn)已添加.NET Core API,開(kāi)發(fā)者可直接在.NET應(yīng)用程序中調(diào)用WebAssembly模塊。
    的頭像 發(fā)表于 12-10 11:35 ?2366次閱讀

    LabVIEW的表格寫(xiě)入讀取程序和工程文件免費(fèi)下載

    編寫(xiě)的表格寫(xiě)入讀取。 波形顯示,如何濾掉小數(shù)部分。 用的宇電501寫(xiě)的實(shí)時(shí)顯示。 本來(lái)想寫(xiě)518的,沒(méi)時(shí)間了。就先這樣,當(dāng)個(gè)樣例參考一下把。
    發(fā)表于 09-16 08:00 ?9次下載
    LabVIEW的表格<b class='flag-5'>寫(xiě)入</b>和<b class='flag-5'>讀取</b>程序和工程<b class='flag-5'>文件</b>免費(fèi)下載

    stm32程序升級(jí)SD卡讀取hex文件寫(xiě)入flash

    stm32程序升級(jí)SD卡讀取hex文件寫(xiě)入flash
    發(fā)表于 11-20 12:36 ?57次下載
    stm32程序升級(jí)SD卡<b class='flag-5'>讀取</b>hex<b class='flag-5'>文件</b><b class='flag-5'>寫(xiě)入</b>flash

    使用閃存讀取寫(xiě)入數(shù)據(jù)

    本教程演示了如何使用Menta OS提供的BlockDevice API使用Portenta H7的板載閃存來(lái)讀取寫(xiě)入數(shù)據(jù)。由于內(nèi)部存儲(chǔ)器的大小有限,我們還將...
    發(fā)表于 01-25 18:25 ?0次下載
    使用閃存<b class='flag-5'>讀取</b>和<b class='flag-5'>寫(xiě)入</b>數(shù)據(jù)

    python文件讀取

    文件讀取的步驟: 打開(kāi)文本文件對(duì)象 寫(xiě)入數(shù)據(jù) 文件讀取一般使用如下三個(gè)方法: read([si
    的頭像 發(fā)表于 06-21 17:23 ?1223次閱讀
    python<b class='flag-5'>文件</b>的<b class='flag-5'>讀取</b>

    如何使用Python和pandas庫(kù)讀取、寫(xiě)入文件

    在本文中,我將介紹如何使用 Python 和 pandas 庫(kù)讀取、寫(xiě)入文件。 1、安裝 pip install pandas 2、讀取 import pandas as pd df
    的頭像 發(fā)表于 09-11 17:52 ?1048次閱讀

    如何使用Python讀取寫(xiě)入Word文件

    01 準(zhǔn)備 Python 是一種通用編程語(yǔ)言,也可以用于處理 Microsoft Word 文件。在本文中,我將向你介紹如何使用 Python 和 python-docx 庫(kù)讀取寫(xiě)入和操作
    的頭像 發(fā)表于 09-27 17:03 ?1868次閱讀