青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

twzheng's cppblog

『站在風(fēng)口浪尖緊握住鼠標(biāo)旋轉(zhuǎn)!』 http://www.cnblogs.com/twzheng

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  136 隨筆 :: 78 文章 :: 353 評(píng)論 :: 0 Trackbacks
C#讀寫(xiě)INI文件 

摘自:伊圖教程網(wǎng)[www.etoow.com]
http://www.etoow.com/html/2007-08/1187271505-1.html
 

       雖然微軟早已經(jīng)建議在
WINDOWS中用注冊(cè)表代替INI文件,但是在實(shí)際應(yīng)用中,INI文件仍然有用武之地,尤其現(xiàn)在綠色軟件的流行,越來(lái)越多的程序?qū)⒆约旱囊恍┡渲眯畔⒈4娴搅?/span>INI文件中。

       INI文件是文本文件,由若干節(jié)(section)組成,在每個(gè)帶括號(hào)的標(biāo)題下面,是若干個(gè)關(guān)鍵詞(key)及其對(duì)應(yīng)的值(Value)

  [Section]

  Key=Value

      

       VC中提供了API函數(shù)進(jìn)行INI文件的讀寫(xiě)操作,但是微軟推出的C#編程語(yǔ)言中卻沒(méi)有相應(yīng)的方法,下面是一個(gè)C# ini文件讀寫(xiě)類,從網(wǎng)上收集的,很全,就是沒(méi)有對(duì)section的改名功能,高手可以增加一個(gè)。

using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Collections;
using System.Collections.Specialized;

namespace wuyisky{
  
/**/
  
/// <summary>
  
/// IniFiles的類
  
/// </summary>

  public class IniFiles
  
{
    
public string FileName; //INI文件名
    
//聲明讀寫(xiě)INI文件的API函數(shù)
    [DllImport("kernel32")]
    
private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
    [DllImport(
"kernel32")]
    
private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);
    
//類的構(gòu)造函數(shù),傳遞INI文件名
    public IniFiles(string AFileName)
    
{
      
// 判斷文件是否存在
      FileInfo fileInfo = new FileInfo(AFileName);
      
//Todo:搞清枚舉的用法
      if ((!fileInfo.Exists))
      
//|| (FileAttributes.Directory in fileInfo.Attributes))
        
//文件不存在,建立文件
        System.IO.StreamWriter sw = new System.IO.StreamWriter(AFileName, false, System.Text.Encoding.Default);
        
try
        
{
          sw.Write(
"#表格配置檔案");
          sw.Close();
        }


        
catch
        
{
          
throw (new ApplicationException("Ini文件不存在"));
        }

      }

      
//必須是完全路徑,不能是相對(duì)路徑
      FileName = fileInfo.FullName;
    }

    
//寫(xiě)INI文件
    public void WriteString(string Section, string Ident, string Value)
    
{
      
if (!WritePrivateProfileString(Section, Ident, Value, FileName))
      
{
 
        
throw (new ApplicationException("寫(xiě)Ini文件出錯(cuò)"));
      }

    }

    
//讀取INI文件指定
    public string ReadString(string Section, string Ident, string Default)
    
{
      Byte[] Buffer 
= new Byte[65535];
      
int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), FileName);
      
//必須設(shè)定0(系統(tǒng)默認(rèn)的代碼頁(yè))的編碼方式,否則無(wú)法支持中文
      string s = Encoding.GetEncoding(0).GetString(Buffer);
      s 
= s.Substring(0, bufLen);
      
return s.Trim();
    }


    
//讀整數(shù)
    public int ReadInteger(string Section, string Ident, int Default)
    
{
      
string intStr = ReadString(Section, Ident, Convert.ToString(Default));
      
try
      
{
        
return Convert.ToInt32(intStr);

      }

      
catch (Exception ex)
      
{
        Console.WriteLine(ex.Message);
        
return Default;
      }

    }


    
//寫(xiě)整數(shù)
    public void WriteInteger(string Section, string Ident, int Value)
    
{
      WriteString(Section, Ident, Value.ToString());
    }


    
//讀布爾
    public bool ReadBool(string Section, string Ident, bool Default)
    
{
      
try
      
{
        
return Convert.ToBoolean(ReadString(Section, Ident, Convert.ToString(Default)));
      }

      
catch (Exception ex)
      
{
        Console.WriteLine(ex.Message);
        
return Default;
      }

    }


    
//寫(xiě)B(tài)ool
    public void WriteBool(string Section, string Ident, bool Value)
    
{
      WriteString(Section, Ident, Convert.ToString(Value));
    }


    
//從Ini文件中,將指定的Section名稱中的所有Ident添加到列表中
    public void ReadSection(string Section, StringCollection Idents)
    
{
      Byte[] Buffer 
= new Byte[16384];
      
//Idents.Clear();

      
int bufLen = GetPrivateProfileString(Section, nullnull, Buffer, Buffer.GetUpperBound(0),
       FileName);
      
//對(duì)Section進(jìn)行解析
      GetStringsFromBuffer(Buffer, bufLen, Idents);
    }


    
private void GetStringsFromBuffer(Byte[] Buffer, int bufLen, StringCollection Strings)
    
{
      Strings.Clear();
      
if (bufLen != 0)
      
{
        
int start = 0;
        
for (int i = 0; i < bufLen; i++)
        
{
          
if ((Buffer[i] == 0&& ((i - start) > 0))
          
{
            String s 
= Encoding.GetEncoding(0).GetString(Buffer, start, i - start);
            Strings.Add(s);
            start 
= i + 1;
          }

        }

      }

    }

    
//從Ini文件中,讀取所有的Sections的名稱
    public void ReadSections(StringCollection SectionList)
    
{
      
//Note:必須得用Bytes來(lái)實(shí)現(xiàn),StringBuilder只能取到第一個(gè)Section
      byte[] Buffer = new byte[65535];
      
int bufLen = 0;
      bufLen 
= GetPrivateProfileString(nullnullnull, Buffer,
       Buffer.GetUpperBound(
0), FileName);
      GetStringsFromBuffer(Buffer, bufLen, SectionList);
    }

    
//讀取指定的Section的所有Value到列表中
    public void ReadSectionValues(string Section, NameValueCollection Values)
    
{
      StringCollection KeyList 
= new StringCollection();
      ReadSection(Section, KeyList);
      Values.Clear();
      
foreach (string key in KeyList)
      
{
        Values.Add(key, ReadString(Section, key, 
""));
  
      }

    }

    
////讀取指定的Section的所有Value到列表中,
    //public void ReadSectionValues(string Section, NameValueCollection Values,char splitString)
    
//{  string sectionValue;
    
//  string[] sectionValueSplit;
    
//  StringCollection KeyList = new StringCollection();
    
//  ReadSection(Section, KeyList);
    
//  Values.Clear();
    
//  foreach (string key in KeyList)
    
//  {
    
//    sectionValue=ReadString(Section, key, "");
    
//    sectionValueSplit=sectionValue.Split(splitString);
    
//    Values.Add(key, sectionValueSplit[0].ToString(),sectionValueSplit[1].ToString());
 
    
//  }
    
//}
    
//清除某個(gè)Section
    public void EraseSection(string Section)
    
{
      
//
      if (!WritePrivateProfileString(Section, nullnull, FileName))
      
{

        
throw (new ApplicationException("無(wú)法清除Ini文件中的Section"));
      }

    }

    
//刪除某個(gè)Section下的鍵
    public void DeleteKey(string Section, string Ident)
    
{
      WritePrivateProfileString(Section, Ident, 
null, FileName);
    }

    
//Note:對(duì)于Win9X,來(lái)說(shuō)需要實(shí)現(xiàn)UpdateFile方法將緩沖中的數(shù)據(jù)寫(xiě)入文件
    
//在Win NT, 2000和XP上,都是直接寫(xiě)文件,沒(méi)有緩沖,所以,無(wú)須實(shí)現(xiàn)UpdateFile
    
//執(zhí)行完對(duì)Ini文件的修改之后,應(yīng)該調(diào)用本方法更新緩沖區(qū)。
    public void UpdateFile()
    
{
      WritePrivateProfileString(
nullnullnull, FileName);
    }


    
//檢查某個(gè)Section下的某個(gè)鍵值是否存在
    public bool ValueExists(string Section, string Ident)
    
{
      
//
      StringCollection Idents = new StringCollection();
      ReadSection(Section, Idents);
      
return Idents.IndexOf(Ident) > -1;
    }


    
//確保資源的釋放
    ~IniFiles()
    
{
      UpdateFile();
    }

  }

}


目前C# 對(duì)ini文件操作基本上要被xml文件取代了,但是我覺(jué)得ini文件的讀寫(xiě)仍然是編程的基本,是必須會(huì)的
posted on 2008-03-10 15:24 譚文政 閱讀(19940) 評(píng)論(15)  編輯 收藏 引用 所屬分類: windows 編程

評(píng)論

# re: C#讀寫(xiě)INI文件 2008-03-18 09:38 123
我還以為L(zhǎng)Z要用I/O流來(lái)讀寫(xiě)INI文件,看了才知道,還是API調(diào)用,就不要用“編程的基本”來(lái)形容了吧  回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2008-05-23 15:18 lingyuan
恩,很好,謝謝  回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2008-08-03 18:08 lqh
滿好的.有API非還要用IO流來(lái)讀寫(xiě)INI.又不是做試驗(yàn),或說(shuō)API不支持這種格式的讀寫(xiě).支持樓主.  回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2009-03-02 17:32 liyi
你能再蠢一點(diǎn)嗎?@123
  回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2009-03-02 17:32 liyi
lingyuan
你能再蠢一點(diǎn)嗎?@123   回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2009-05-18 12:41 AAA
樓主你能再蠢一點(diǎn)嗎?@  回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2009-08-19 16:58 Jod
之前用IO自己寫(xiě)了一個(gè),主要是用字符替換和正則匹配來(lái)做。
這個(gè)方法和我看到的老外的源代碼差不多,也是一個(gè)方法。  回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2009-08-28 13:54 weizy
說(shuō)樓主不好的自己貼一個(gè)看看,不要亂吆喝  回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2009-09-09 09:24 劉永輝
http://www.cnblogs.com/zzyyll2/archive/2007/11/06/950584.html  回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2009-10-08 10:26 我們學(xué)習(xí)網(wǎng)
呵呵,挺好的,不過(guò)我覺(jué)的用c#用xml挺好的,可以取代ini文件。  回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2010-01-29 12:32 c#lover
我是感覺(jué)用xml有格式限制。比如存一段html文件,就用問(wèn)題了。 @我們學(xué)習(xí)網(wǎng)
  回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2010-06-15 20:02 HaynesMadeline25
Your useful data related to this topic goes parallel with the student dissertation. So, you could perform for <a href="http://www.master-dissertations.com">thesis writing</a> service.   回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2010-06-15 23:49 term papers online
Some specialists opine that to buy the analysis essays at the research paper services can be not a cheating, if college students study the papers closely.   回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2010-06-18 11:44 thesis
When students like to receive academic success on every subject you would order list of dissertation and buy thesis. I did that several times. I told just about dissertations in research paper writing services.   回復(fù)  更多評(píng)論
  

# re: C#讀寫(xiě)INI文件 2010-07-05 22:36 華子
怎么還回一個(gè)DataTable啊?  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜欧美大片免费观看| 91久久线看在观草草青青| 小处雏高清一区二区三区| 一区二区三区四区五区精品| 欧美色综合天天久久综合精品| 亚洲小说春色综合另类电影| 亚洲综合视频网| 狠狠色噜噜狠狠狠狠色吗综合| 免费成人av| 欧美日韩亚洲三区| 欧美尤物一区| 欧美aⅴ99久久黑人专区| 亚洲最新在线| 小黄鸭视频精品导航| 亚洲高清在线播放| 日韩一级精品| 黄色国产精品| 亚洲美女啪啪| 黄色国产精品一区二区三区| 亚洲国产精品女人久久久| 欧美在线视频不卡| 美女久久一区| 欧美亚洲免费电影| 久久资源av| 久久se精品一区二区| 欧美www视频在线观看| 性色av一区二区三区红粉影视| 久久精品国产清高在天天线| 在线视频一区二区| 麻豆精品在线播放| 欧美在线观看一区| 欧美久久电影| 麻豆精品在线播放| 国产精品丝袜xxxxxxx| 亚洲国产精品电影| 国产亚洲a∨片在线观看| 亚洲乱码久久| 亚洲国产小视频在线观看| 亚洲在线免费观看| 国产精品99久久久久久久久| 欧美jizz19hd性欧美| 欧美日韩免费高清一区色橹橹| 亚洲成色999久久网站| 亚洲少妇自拍| 亚洲精品综合| 免费久久久一本精品久久区| 久久精品视频免费播放| 国产精品国产福利国产秒拍| 亚洲国产专区校园欧美| 亚洲第一视频网站| 久久久久久夜| 久久久美女艺术照精彩视频福利播放 | 亚洲国产精品精华液网站| 亚洲性图久久| 亚洲欧美激情视频在线观看一区二区三区| 欧美插天视频在线播放| 久久婷婷久久| 黄色成人av在线| 久久精品91| 蜜臀91精品一区二区三区| 精品av久久久久电影| 欧美一区综合| 免费一级欧美片在线观看| 黄色国产精品| 噜噜噜91成人网| 亚洲福利一区| 日韩视频亚洲视频| 欧美日韩性视频在线| 9l国产精品久久久久麻豆| 在线午夜精品自拍| 国产精品成人久久久久| 亚洲一区日本| 久久久免费观看视频| 伊人夜夜躁av伊人久久| 老司机午夜精品视频| 亚洲福利视频在线| 亚洲一区二区免费| 国产色视频一区| 久久久精品免费视频| 亚洲国产毛片完整版| 这里只有精品视频在线| 国产精品视频一二三| 欧美伊人久久| 91久久黄色| 性伦欧美刺激片在线观看| 狠狠爱成人网| 欧美日韩国产高清| 亚洲欧美bt| 亚洲国产91| 欧美一区在线看| 亚洲电影免费观看高清完整版| 欧美经典一区二区| 午夜视频在线观看一区二区| 免费在线观看成人av| 中文亚洲欧美| 激情综合色综合久久综合| 欧美精品久久99久久在免费线| 亚洲一区二区av电影| 免费久久99精品国产| 中国女人久久久| 狠狠色狠狠色综合日日tαg | 久久人人爽爽爽人久久久| 亚洲乱码国产乱码精品精| 久久国产色av| 亚洲深夜激情| 在线欧美不卡| 国产色爱av资源综合区| 亚洲欧洲另类国产综合| 亚洲另类自拍| 狠狠色综合网| 国产精品丝袜xxxxxxx| 久久中文字幕导航| 午夜影院日韩| 日韩午夜电影av| 美女爽到呻吟久久久久| 午夜精品理论片| 99综合电影在线视频| 在线成人www免费观看视频| 国产精品无码永久免费888| 欧美成人网在线| 久久一区二区视频| 午夜久久久久久| 亚洲视频免费观看| 亚洲精品护士| 亚洲国产天堂久久综合| 猫咪成人在线观看| 久久精品国产99精品国产亚洲性色 | 国产自产女人91一区在线观看| 欧美日韩在线综合| 欧美激情一区二区三区| 美女主播精品视频一二三四| 久久激情视频久久| 欧美一区二区三区四区在线| 亚洲视频欧美视频| 中文精品一区二区三区| 亚洲最新视频在线播放| 日韩亚洲视频在线| 99精品国产一区二区青青牛奶| 亚洲精品女av网站| 欧美激情久久久久| 亚洲国产专区| 亚洲伦理一区| 国产精品99久久久久久久vr| 艳妇臀荡乳欲伦亚洲一区| 日韩午夜电影av| 亚洲网在线观看| 亚洲综合色噜噜狠狠| 欧美在线一区二区三区| 欧美在线免费播放| 麻豆精品传媒视频| 欧美精品18videos性欧美| 欧美日韩国产丝袜另类| 国产精品久久久久久久久久久久| 国产精品久久久一区麻豆最新章节| 国产精品xxx在线观看www| 国产免费成人av| 在线观看日韩av电影| 亚洲欧洲精品一区二区精品久久久 | 国产精品乱码| 狠狠色丁香婷婷综合影院| 亚洲国产精品t66y| 亚洲天堂网站在线观看视频| 香蕉免费一区二区三区在线观看| 久久精品免视看| 欧美国产日韩一区二区三区| 日韩视频不卡中文| 欧美一区视频| 欧美成人免费播放| 国产精品一区在线观看| 亚洲国产高清一区| 亚洲免费在线看| 美女爽到呻吟久久久久| 9久re热视频在线精品| 性久久久久久久| 欧美精品观看| 国产日韩欧美在线观看| 亚洲精品一区二区三区福利| 性8sex亚洲区入口| 亚洲精品久久久久久久久久久久| 午夜日韩福利| 欧美久久九九| 樱桃国产成人精品视频| 久久久久亚洲综合| 欧美性理论片在线观看片免费| 好看的日韩视频| 午夜国产精品影院在线观看| 免费亚洲电影在线| 校园春色国产精品| 欧美三区在线视频| 亚洲欧洲一区二区三区久久| 久久精品91久久久久久再现| 亚洲乱码国产乱码精品精可以看| 久久久精品国产一区二区三区| 国产精品自拍视频| 亚洲视频中文| 亚洲人体一区| 美女视频黄免费的久久| 狠狠色丁香婷婷综合影院| 午夜精品成人在线| 一本大道久久a久久综合婷婷|