1. 程式人生 > >C# 讀取配置檔案和修改(二)

C# 讀取配置檔案和修改(二)

讀取:

  1. string str= ConfigurationManager.AppSettings["key"];  

寫入:

  1.  Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  
  2.  configuration.AppSettings.Settings[key].Value = result;  
  3. configuration.Save();  
  4. ConfigurationManager.RefreshSection("appSettings");  

在VS 2005中設定和讀取配置檔案已經變的很簡單了,而且是強型別的,讀取的值可以直接賦值給相應的變數,無需強制轉換。

例如:DateTime userDateTime1 = Properties.Settings.Default.userDateTime1; 真是方便了很多。但是你有沒有發現,使用 Properties.Settings.Default.Save() 儲存了設定後,Application 範圍的設定為什麼沒有儲存成功,User 範圍的設定的變化為什麼沒有體現到 app.config 檔案中去呢? 

1. 在VS 2005中進行應用程式設定
    開啟 專案屬性 ? 設定,如下圖:


 輸入名稱,選擇型別和範圍,輸入值儲存即完成設定。
   型別:int,string,DateTime等各種資料型別;
   範圍:Application  範圍的設定對所有使用者都有效;


           User 範圍的設定對當前使用者(當前 Windows 登入的使用者)有效,同一個設定每個使用者可以有不同的值,而且互不影響。

2. 讀取配置檔案(讀取應用程式設定)
     無論是Application  範圍的設定,還是User 範圍的設定,讀取的方法都是一樣的。

  1. // 讀取設定
  2.    this.appSetting1TextBox.Text = Properties.Settings.Default.appSetting1;  
  3.    this.userSetting1TextBox.Text = Properties.Settings.Default.userSetting1;  

3. 儲存 User 範圍配置檔案(儲存 User 範圍的應用程式設定)
  1. // 儲存 User 範圍的設定
  2.    Properties.Settings.Default.userSetting1 = this.userSetting1TextBox.Text;  
  3.    Properties.Settings.Default.Save();  

 User 範圍配置檔案沒有儲存在應用程式資料夾下,而是儲存在這裡:X:\Documents and Settings\Windows登入使用者\Local Settings\Application Data。
4. 儲存 Application 範圍配置檔案(儲存 Application 範圍的應用程式設定)     
    儲存 Application 範圍配置檔案可沒有儲存 User 範圍配置檔案那樣簡單,直接 Properties.Settings.Default.Save() 是不行的。因為 Application 範圍的設定在執行時是“只讀”的。這裡使用的方法是使用 XmlDocument 來直接儲存 config 檔案,然後在 Reload 設定。
  1. // 儲存 Applicationi 範圍的設定
  2.    string configFileName = Application.ExecutablePath + ".config";  
  3.    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();  
  4.    doc.Load(configFileName);  
  5.    string configString = @"configuration/applicationSettings/SetConfig.Properties.Settings/setting[@name='appSetting1']/value";  
  6.    System.Xml.XmlNode configNode = doc.SelectSingleNode(configString);  
  7.    if (configNode != null)  
  8.    {  
  9.        configNode.InnerText = this.appSetting1TextBox.Text;  
  10.        doc.Save(configFileName);  
  11.        // 重新整理應用程式設定,這樣下次讀取時才能讀到最新的值。
  12.        Properties.Settings.Default.Reload();  
  13.    }  

順便說一下:使用 Properties.Settings.Default.Reset() 可以恢復 User 範圍設定的預設值(從 app.config 中恢復)。

這下面兩個方法也類似,摘抄下來做個備份學習:

  1. privatevoid SaveConfig(string ConnenctionString)  
  2. {  
  3. XmlDocument doc=new XmlDocument();  
  4. //獲得配置檔案的全路徑
  5. string strFileName=AppDomain.CurrentDomain.BaseDirectory.ToString()+".exe.config";  
  6. doc.Load(strFileName);  
  7. //找出名稱為“add”的所有元素
  8. XmlNodeList nodes=doc.GetElementsByTagName("add");  
  9. for(int i=0;i<nodes.Count;i++)  
  10. {  
  11. //獲得將當前元素的key屬性
  12. XmlAttribute att=nodes[i].Attributes["key"];  
  13. //根據元素的第一個屬性來判斷當前的元素是不是目標元素
  14. if (att.Value=="ConnectionString")   
  15. {  
  16. //對目標元素中的第二個屬性賦值
  17. att=nodes[i].Attributes["value"];  
  18. att.Value=ConnenctionString;  
  19. break;  
  20. }  
  21. }  
  22. //儲存上面的修改
  23. doc.Save(strFileName);  
  24. }   
  25. ==============================================================================  
  26. publicstaticvoid SetValue(string AppKey,string AppValue)  
  27. {  
  28. XmlDocument xDoc = new XmlDocument();  
  29. xDoc.Load(System.Windows.Forms.Application.ExecutablePath + ".config");  
  30. XmlNode xNode;  
  31. XmlElement xElem1;  
  32. XmlElement xElem2;  
  33. xNode = xDoc.SelectSingleNode("//appSettings");  
  34. xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='" + AppKey + "']");  
  35. if ( xElem1 != null ) xElem1.SetAttribute("value",AppValue);  
  36. else
  37. {  
  38. xElem2 = xDoc.CreateElement("add");  
  39. xElem2.SetAttribute("key",AppKey);  
  40. xElem2.SetAttribute("value",AppValue);  
  41. xNode.AppendChild(xElem2);  
  42. }  
  43. xDoc.Save(System.Windows.Forms.Application.ExecutablePath + ".config");  
  44. }  

相關推薦

C# 讀取配置檔案修改

讀取:string str= ConfigurationManager.AppSettings["key"];  寫入: Configuration configuration = ConfigurationManager.OpenExeConfiguration(Confi

專案中讀取配置檔案的方式

import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** 有時,需要配置檔案,配置檔案中儲存的內容是什麼 ? 儲存屬性 儲存一些經常

三大框架ssh學習——配置檔案詳解

多配置檔案實現 專案經常需要多人協作開發,但是如果大家都是用同一個struts.xml檔案,會互相影響不利於開發的正常開展。這樣,我們可以通過<include>元素指定多個配置檔案。 可以在src下面建立多個struts配置檔案。然後再struts.xml中分別引入: str

專案中常用的讀取配置檔案的方式

package com.bjpowernode.demo01; import java.util.ResourceBundle; /** ResourceBundle讀取配置檔案 @author Administrator */ public clas

【SpringBoot學習之路】06.Springboot配置檔案詳解

轉載宣告:商業轉載請聯絡作者獲得授權,非商業轉載請註明出處.原文來自 © 呆萌鍾 【SpringBoot學習之路】06.Springboot配置檔案詳解(二) 配置檔案值注入 @Value獲取值和@ConfigurationProperties獲取值比較

0 httpd2.2配置詳解-Apache配置檔案詳解-

httpd-2.2 15 curl命令 curl是基於URL語法在命令列方式下工作的檔案傳輸工具,它支援FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等協議。curl支援HTTPS認證,並且支援HTTP的POST、PU

effective C++筆記--定製newdelete

文章目錄 編寫new和delete時需固守常規 寫了placement new也要寫 placement delete 編寫new和delete時需固守常規 . 在編寫自己的operator new和operator delete時,需要

Unix/Linux程式設計-檔案目錄

檔案和目錄(二) 4.8 更改檔案實際使用者ID和實際組ID #include <unistd.h> int  chown(const char *pathname, uid_t owner, gid_t group);

【Mybatis】MyBatis配置檔案的使用

  本例在【Mybatis】MyBatis快速入門(一)基礎上繼續學習XML對映配置檔案   MyBatis 的配置檔案包含了會深深影響 MyBatis 行為的設定(settings)和屬性(properties)資訊。文件的頂層結構如下: configuration 配置 prop

mongo shell啟動配置檔案.mongorc.js

如果你的主目錄下有個.mongorc.js檔案,那麼當你啟動shell時他就會自動執行。使用它可以初始化任何你經常使用的helper方法和你不想意外操作的刪除方法。 比如,你不想使用預設的dropDatabase()方法了,你可以在.mongorc.js檔案中新增下面的命令: 複製內容到剪貼簿 程式碼:

【Mybatis】MyBatis對錶執行CRUD操作 【Mybatis】MyBatis配置檔案的使用

  本例在【Mybatis】MyBatis配置檔案的使用(二)基礎上繼續學習對錶執行CRUD操作 使用MyBatis對錶執行CRUD操作   1、定義sql對映xml檔案(EmployeeMapper.xml) 1 <?xml version="1.0" encoding="UTF-8"

C++學習筆記——類物件

設計一個類就是設計一個新的型別,應該考慮: 此型別的“合法值”是什麼? 此型別應該有什麼樣的函式和操作符? 新型別的物件該如何被建立和銷燬? 如何進行物件的初始化和賦值? 物件作為函式的引數如何以值傳遞? 誰將使用此型別的物件成員? 類定義的語法形式: clas

c#中配置檔案的使用

     在使用log4net的時候,需要自己來配置相關的檔案,之前雖然研究過如何來使用配置檔案,但是時間一久還是有點生疏,下面自己做的一些小test,也讓自己能夠有比較深的印象,在學習過程中,也在網上看到了一位大神寫的相關的內容,比較詳細,這是大神部落格關於配置檔案的地址

藍芽配置檔案協議總則

L2CAP是為了對複數個連結進行管理的協議。 除了對若干個對方裝置的連結進行管理之外,對同一個裝置的若干個連結也進行管理。 對同一個裝置的若干個連結進行管理的意思是說,比方同時打開了用作SDP通訊的通道和用作RFCOMM通訊的通道,為了這些通道彼此互不干擾而將其彼此區分而進行了管理。 SDP (Serv

C語言的檔案的操作

C語言的檔案的操作(二) 八.資料塊讀寫   #fread 函式是從檔案中讀出資料塊。 int fread(void *buf, int size, int count, FILE *fp); #fwrite函式是向檔案寫入資料塊。 int fwrite(void *buf

C++ XML的建立、讀取修改

跟C#不太一樣,需要呼叫一個TinyXML庫來生成XML,庫的原始碼地址為https://github.com/leethomason/tinyxml2,找到“clone or down”進行下載,,解壓之後,將tinyxml2.h 和 tinyxml2.cpp放入工程檔案中,呼

C# 用配置檔案連線資料庫WinformWebform

Winform中用配置檔案連線資料庫 資料庫連線類YSqlHelper程式碼: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst

python包-numpy資料讀取儲存

目錄 0.為什麼要使用numpy儲存資料 1.儲存為二進位制檔案(.npy/.npz)並讀取 numpy.save和numpy.load numpy.savez numpy.savez_compressed 2.儲存到文字檔案 numpy.savetxt nump

CLR VIA C# 閱讀筆記感悟

GC垃圾回收:垃圾回收機制其實是對記憶體的碎片化管理,首先會暫停所有執行緒的執行,防止碎片化管理時,物件的狀態被修改,然後遍歷託管堆中的所有物件,刪除沒有變數引用的物件,並且移動堆中的所有物件的記憶體地址,刪除物件之間的空隙,變成一塊連續的記憶體,提高物件的引用效率,節省更多的記憶體空間,但這會導致

C 讀取文字檔案C 寫文字檔案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!