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

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>
            久久国内精品视频| 国产亚洲成精品久久| av不卡在线看| 一区二区免费看| 亚洲女人天堂av| 久久精品亚洲精品国产欧美kt∨| 欧美一区二区视频在线观看| 久久精品视频在线看| 你懂的国产精品| 欧美先锋影音| 欲香欲色天天天综合和网| 亚洲精品一区在线观看| 午夜精品视频一区| 久久一区中文字幕| 亚洲精品免费网站| 午夜日韩视频| 欧美激情第二页| 国产欧美精品日韩精品| 亚洲国产色一区| 性久久久久久久| 亚洲黄色小视频| 欧美一级视频免费在线观看| 亚洲一区999| 国产亚洲一级| 9色porny自拍视频一区二区| 欧美中日韩免费视频| 亚洲高清自拍| 欧美亚洲日本网站| 欧美成人精品福利| 国产婷婷成人久久av免费高清 | aa成人免费视频| 亚欧成人在线| 欧美午夜视频网站| 亚洲国产另类久久久精品极度| 欧美一级播放| 亚洲精品综合| 免费视频一区| 悠悠资源网亚洲青| 欧美在线视频在线播放完整版免费观看| 欧美成在线视频| 欧美在线视频在线播放完整版免费观看 | 欧美成人a视频| 国产一区二区三区不卡在线观看| 亚洲午夜精品17c| 亚洲国产专区| 欧美成人首页| 亚洲欧洲日产国产综合网| 久久久人成影片一区二区三区| 亚洲午夜精品| 国产精品久久久久影院色老大 | 国产一区二区三区的电影| 亚洲一区精品视频| 99精品热6080yy久久 | 欧美日韩一区高清| 亚洲免费观看高清在线观看 | 亚洲免费播放| 欧美福利一区| 欧美国产精品专区| 亚洲精品久久嫩草网站秘色| 欧美不卡高清| 另类尿喷潮videofree| 亚洲国产成人久久| 亚洲国产美国国产综合一区二区| 久久女同精品一区二区| 1000部国产精品成人观看| 你懂的亚洲视频| 理论片一区二区在线| 亚洲精品乱码久久久久| 一区二区日韩免费看| 午夜精品视频| 一区二区三区欧美成人| 亚洲精品一区在线观看香蕉| 久久久久久久综合色一本| 亚洲午夜精品久久久久久浪潮| 欧美精品一区二区三区很污很色的| 亚洲精选视频免费看| 亚洲欧洲一区二区三区久久| 久久在线播放| 亚洲激情在线观看| 亚洲黄色精品| 欧美日韩午夜剧场| 性色av一区二区三区| 午夜视频久久久| 国产一区二区三区观看| 噜噜噜91成人网| 免费久久精品视频| 亚洲视频在线免费观看| 午夜欧美大尺度福利影院在线看| 韩国福利一区| 亚洲国产精品精华液2区45| 欧美理论电影在线观看| 亚洲欧美中文日韩v在线观看| 欧美一区二区三区日韩视频| 亚洲电影天堂av| 一区二区三区日韩| 国内久久精品| 亚洲精品日韩激情在线电影| 国产精品亚洲第一区在线暖暖韩国| 久久精品国产免费| 欧美成人网在线| 欧美中文字幕精品| 免费一级欧美片在线播放| 亚洲一区精品电影| 美女主播精品视频一二三四| 亚洲欧美韩国| 久久―日本道色综合久久| 99在线精品观看| 亚洲一级在线观看| 亚洲精品国产无天堂网2021| 亚洲无线观看| 亚洲清纯自拍| 欧美一区二区三区在线| 亚洲美女在线观看| 久久精彩视频| 亚洲综合三区| 欧美成人视屏| 欧美阿v一级看视频| 国产欧美日韩一区| 日韩亚洲视频在线| 禁断一区二区三区在线| 一本色道久久| 亚洲人成欧美中文字幕| 欧美在线播放| 亚洲自拍偷拍网址| 欧美freesex交免费视频| 欧美一区二区视频在线| 亚洲网址在线| 老牛嫩草一区二区三区日本| 亚洲高清在线观看| 一区二区高清视频| 夜色激情一区二区| 久久久久久夜精品精品免费| 亚洲视频在线免费观看| 日韩一级精品| 久久精品人人做人人爽| 午夜电影亚洲| 欧美日韩精品免费看| 欧美激情视频给我| 亚洲黄色三级| 久热综合在线亚洲精品| 久久国产婷婷国产香蕉| 国产精品女人久久久久久| 亚洲精品国产精品国自产观看| 在线看欧美日韩| 久久精品视频免费播放| 裸体丰满少妇做受久久99精品| 国内在线观看一区二区三区| 亚洲欧美制服另类日韩| 欧美一区二区视频在线观看| 国产精品久久久久永久免费观看| 一区二区欧美日韩| 欧美在线播放| 国产欧美综合一区二区三区| 亚洲专区欧美专区| 欧美伊人久久大香线蕉综合69| 国产精品手机视频| 欧美一区二区精品在线| 欧美成人高清视频| 亚洲精品国产精品国自产在线| 欧美精品三级| 在线亚洲观看| 欧美一区二区三区在线播放| 国产日韩亚洲欧美精品| 久久综合伊人77777蜜臀| 男女视频一区二区| 亚洲美女在线看| 国产精品成人在线观看| 亚洲午夜国产一区99re久久| 欧美亚洲午夜视频在线观看| 国内精品久久久久影院优| 久久久欧美精品| 亚洲黄一区二区| 亚洲一区影院| 影音先锋中文字幕一区| 久久精品视频网| 亚洲毛片av| 久久精品91久久久久久再现| 影音欧美亚洲| 欧美日韩亚洲网| 欧美一级在线亚洲天堂| 亚洲国产精品久久| 午夜精品一区二区三区四区| 在线精品国精品国产尤物884a| 欧美激情视频给我| 欧美一级黄色录像| 99视频一区二区| 欧美大片一区二区三区| 午夜国产精品视频免费体验区| 亚洲激情在线激情| 国产一区二区三区精品久久久| 欧美多人爱爱视频网站| 欧美一区成人| 亚洲精品视频在线播放| 久久精品国产精品亚洲精品| 亚洲乱码精品一二三四区日韩在线 | 久久综合色天天久久综合图片| 亚洲国产天堂网精品网站| 国产精品美女久久久免费| 美女福利精品视频| 新狼窝色av性久久久久久|