问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是ini文件,有何作用?

发布网友 发布时间:2022-05-02 06:19

我来回答

2个回答

懂视网 时间:2022-05-02 10:41

public void GetAllSections(string iniFileName, out List<string> SectionsList) 2 { 3 SectionsList = new List<string>(); 4 string fileText = ""; 5 6 try 7 { 8 StreamReader sr = new StreamReader(iniFileName, Encoding.Default); 9 fileText = sr.ReadToEnd(); 10 sr.Close();//这一句一定要加 11 12 } 13 catch (Exception) 14 { 15 MessageBox.Show("文件" + iniFileName + "不存在或错误!"); 16 return; 17 } 18 19 20 try 21 { 22 string[] _split = fileText.Split(new Char[] { ‘[‘ }); 23 24 //由于上面是用“[”分割的,因此下面的i从1开始 25 for (int i = 1; i < _split.Count(); i++) 26 { 27 string[] split_temp = _split[i].Split(new Char[] { ‘]‘ }); 28 29 if (split_temp[0].Trim() != "") 30 { 31 SectionsList.Add(split_temp[0].Trim()); 32 } 33 } 34 35 } 36 catch (Exception) 37 { 38 //这里我就什么也不做,这是坠吼的! 39 } 40 }

 

2、获得指定section下的所有key值,并将它们添加到List列表中的代码实现:

 1 public void GetAllKeys(string iniFileName, out List<string> keysList, int Section_index)
 2  {
 3  keysList = new List<string>();
 4  string fileText = "";
 5 
 6  try
 7   {
 8   StreamReader sr = new StreamReader(iniFileName, Encoding.Default);
 9   fileText = sr.ReadToEnd();
10   sr.Close();//这一句一定要加
11 
12   }
13  catch (Exception)
14   {
15   MessageBox.Show("文件" + iniFileName + "不存在或错误!");
16   return;
17   }
18 
19  try
20   {
21   //先把所有的[section]去掉
22   string[] _split = fileText.Split(new Char[] { ‘[‘ });
23   string[] split_temp = _split[Section_index + 1].Split(new Char[] { ‘]‘ });
24 
25   string text_key_value = split_temp[1];//获得section索引为Section_index下的key和value的文本
26 
27   text_key_value = text_key_value.Replace("
", "?");//将换行符换成?,便于后面进一步分割
28   string[] KeyLists_temp = text_key_value.Split(new char[] { ‘?‘ });//按‘?’分割,注意可能会有空字符串数组元素
29 
30   //将分割出来的每一个非空key加入到keysList里面去
31   for (int i = 1; i < KeyLists_temp.Count(); i++)
32   {
33   if (KeyLists_temp[i].Trim() != "")
34    {
35    string _key = KeyLists_temp[i].Split(new char[] { ‘=‘ })[0];
36    if (_key.Trim() != "")
37    {
38     keysList.Add(_key.Trim());
39    }
40    }
41   }
42 
43   }
44  catch (Exception)
45   {
46   MessageBox.Show("文件" + iniFileName + "不存在或错误!");
47   }
48 
49 
50 
51  }

 

3、将List中的值添加到ComboBox控件的Item中的代码实现:

1 public void AddList_ToCmb(List<string> _infoList, ComboBox _cmbBox)
2  {
3  for (int i = 0; i < _infoList.Count; i++)
4   {
5   _cmbBox.Items.Add(_infoList[i]);
6   }
7  }

 

整个程序完整代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.IO;
 4 using System.Linq;
 5 using System.Runtime.InteropServices;
 6 using System.Text;
 7 using System.Windows.Forms;
 8 using System.Windows.Forms.VisualStyles;
 9 
 10 namespace test1
 11 {
 12 public partial class CustomManage : Form
 13  {
 14  public CustomManage()
 15  {
 16   InitializeComponent();
 17  this.StartPosition = FormStartPosition.CenterScreen;
 18  }
 19 
 20 
 21  private void customManage_Load(object sender, EventArgs e)
 22  {
 23  List<string> _listSections = new List<string>();
 24  List<string> _listKeys = new List<string>();
 25 
 26  GetAllSections("companyInfo.ini", out _listSections);
 27   AddList_ToCmb(_listSections, cmb_address);
 28 
 29  GetAllKeys("companyInfo.ini", out _listKeys, 0);
 30   AddList_ToCmb(_listKeys, cmb_name);
 31  }
 32 
 33 
 34  private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
 35  {
 36  //清空原有数据
 37  int index = cmb_address.SelectedIndex;
 38   cmb_name.Items.Clear();
 39  cmb_name.Text = "";
 40 
 41  //重新获得对应section下的key值的列表,并添加到cmb_Name中
 42  List<string> _nameList = new List<string>();
 43  GetAllKeys("companyInfo.ini", out _nameList, index);
 44   AddList_ToCmb(_nameList, cmb_name);
 45  }
 46 
 47 
 48  //删除条目
 49  private void button4_Click(object sender, EventArgs e)
 50  {
 51  string _fileName = "companyInfo.ini";
 52  try
 53   {
 54   StreamReader sr = new StreamReader(_fileName, Encoding.Default);
 55   string str = sr.ReadToEnd();
 56   sr.Close();
 57 
 58   //该删除方式有缺陷,要求“=”两侧不能有空格,否则会删除失败(以后可以考虑用正则匹配一下)
 59   string _deleteItem = cmb_name.Text + "=" + GetValue(_fileName, cmb_address.Text, cmb_name.Text);
 60   str = str.Replace(_deleteItem, "");
 61   StreamWriter sw = new StreamWriter(_fileName, false, Encoding.Default);
 62  
 63   sw.Write(str);
 64   sw.Flush();
 65   sw.Close();
 66 
 67   MessageBox.Show("删除成功!");
 68  
 69   }
 70  catch (Exception)
 71   {
 72   MessageBox.Show("文件" + _fileName + "不存在或错误!");
 73   }
 74  }
 75 
 76 
 77  //修改条目
 78  private void button1_Click(object sender, EventArgs e)
 79  {
 80  string _fileName = "companyInfo.ini";
 81   SetValue(_fileName, cmb_address.Text.Trim(), cmb_name.Text.Trim(), tbx_value.Text.Trim());
 82 
 83  MessageBox.Show("修改成功!");
 84  }
 85 
 86  /// <summary> 获得所有的section
 87  /// 
 88  /// </summary>
 89  /// <param name="iniFileName"></param>
 90  /// <param name="SectionsList"></param>
 91  public void GetAllSections(string iniFileName, out List<string> SectionsList)
 92  {
 93  SectionsList = new List<string>();
 94  string fileText = "";
 95 
 96  try
 97   {
 98   StreamReader sr = new StreamReader(iniFileName, Encoding.Default);
 99   fileText = sr.ReadToEnd();
100   sr.Close();//这一句一定要加
101 
102   }
103  catch (Exception)
104   {
105   MessageBox.Show("文件" + iniFileName + "不存在或错误!");
106   return;
107   }
108 
109 
110  try
111   {
112   string[] _split = fileText.Split(new Char[] { ‘[‘ });
113 
114   //由于上面是用“[”分割的,因此下面的i从1开始
115   for (int i = 1; i < _split.Count(); i++)
116   {
117   string[] split_temp = _split[i].Split(new Char[] { ‘]‘ });
118 
119   if (split_temp[0].Trim() != "")
120    {
121    SectionsList.Add(split_temp[0].Trim());
122    }
123   }
124 
125   }
126  catch (Exception)
127   {
128   //这里我就什么也不做,这是坠吼的!  
129   }
130  }
131 
132 
133  /// <summary> 获得指定section下的所有key值
134  /// 
135  /// </summary>
136  /// <param name="iniFileName"></param>
137  /// <param name="keysList"></param>
138  /// <param name="Section_index"></param>
139  public void GetAllKeys(string iniFileName, out List<string> keysList, int Section_index)
140  {
141  keysList = new List<string>();
142  string fileText = "";
143 
144  try
145   {
146   StreamReader sr = new StreamReader(iniFileName, Encoding.Default);
147   fileText = sr.ReadToEnd();
148   sr.Close();//这一句一定要加
149 
150   }
151  catch (Exception)
152   {
153   MessageBox.Show("文件" + iniFileName + "不存在或错误!");
154   return;
155   }
156 
157  try
158   {
159   //先把所有的[section]去掉
160   string[] _split = fileText.Split(new Char[] { ‘[‘ });
161   string[] split_temp = _split[Section_index + 1].Split(new Char[] { ‘]‘ });
162 
163   string text_key_value = split_temp[1];//获得section索引为Section_index下的key和value的文本
164 
165   text_key_value = text_key_value.Replace("
", "?");//将换行符换成?,便于后面进一步分割
166   string[] KeyLists_temp = text_key_value.Split(new char[] { ‘?‘ });//按‘?’分割,注意可能会有空字符串数组元素
167 
168   //将分割出来的每一个非空key加入到keysList里面去
169   for (int i = 1; i < KeyLists_temp.Count(); i++)
170   {
171   if (KeyLists_temp[i].Trim() != "")
172    {
173    string _key = KeyLists_temp[i].Split(new char[] { ‘=‘ })[0];
174    if (_key.Trim() != "")
175    {
176     keysList.Add(_key.Trim());
177    }
178    }
179   }
180 
181   }
182  catch (Exception)
183   {
184   MessageBox.Show("文件" + iniFileName + "不存在或错误!");
185   }
186  }
187 
188 
189  /// <summary> 将字符串List中的值添加到ComboBox控件的Item中。
190  /// 
191  /// </summary>
192  /// <param name="_infoList"></param>
193  /// <param name="_cmbBox"></param>
194  public void AddList_ToCmb(List<string> _infoList, ComboBox _cmbBox)
195  {
196  for (int i = 0; i < _infoList.Count; i++)
197   {
198   _cmbBox.Items.Add(_infoList[i]);
199   }
200  }
201 
202 
203  #region 读、写ini配置文件的方法
204 
205  [DllImport("kernel32")]
206  private static extern int GetPrivateProfileString(string section, string key, string defVal,
207  StringBuilder retVal, int size, string filePath);
208 
209  [DllImport("kernel32")]
210  private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
211 
212 
213  public string GetValue(string parasFileName, string section, string key)
214  {
215  var sb = new StringBuilder(255);
216  string strPath = Environment.CurrentDirectory + "\" + parasFileName;
217  int i = GetPrivateProfileString(section, key, "该文件不存在", sb, 255, strPath);
218  return sb.ToString();
219  }
220 
221 
222  public void SetValue(string parasFileName, string section, string key, string value)
223  {
224  //获得当前路径,当前是在Debug路径下 
225  string strPath = Environment.CurrentDirectory + "\" + parasFileName;
226   WritePrivateProfileString(section, key, value, strPath);
227  }
228 
229  #endregion
230 
231 
232 
233 
234  }
235 }

 注:上面的完整代码为了减少代码量便于阅读,有些功能的实现写得不够完善,具体使用的时候需要自行改进。

操作ini配置文件设计一个最基本的可视化数据库系统

标签:region   存在   目的   sage   generic   default   bug   styles   har   

热心网友 时间:2022-05-02 07:49

INI是微软Windows操作系统中的文件扩展名。这些字母表示初始化。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。

.ini , .inc之类的文件,一般是放一些常量或数据库链接语句等,再在需要的页面包含进去,和直接命为 asp 是没什么区别的。
但为了安全性,最好不要用这些后缀名,因为知道文件名时,在浏览器里输入该文件的地址时,可看到所有内容的。
在Windows系统中,INI文件是很多,最重要的就是“System.ini”、“System32.ini”和“Win.ini”。该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使应用程序和系统都把许多参数和初始化信息放进了注册表中。但在某些场合,INI文件还拥有其不可替代的地位。
.ini 文件是windows的系统配置文件,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了,但在某些情况,还是要直接编辑.ini才方便,一般只有很熟悉windows才能去直接编辑。开始时用于WIN3.1下面,WIN95用注册表代替,[]及后面的内容表示一个节,相当于注册表中的键。
除了windows现在很多windows下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
真三国无双8手柄怎么设置 手柄设置技巧 沈阳机场轻轨的运行间隔是多少 沈抚轻轨概述 沈阳机场轻轨的票价是多少 沈阳轻轨5号线全线站点及时间 沈阳最早和最晚的一班轻轨是几点 内存条是单插一根好,还是双通道好! 碧玉和玛瑙区别 碧玉和玛瑙的区别 碧玉与玛瑙的区别 冰箱经常插拔对冰箱有没影响? 保定市2020五月开始限行了吗现在? 微信关注保定交警哪个预约挂牌? 华为c199不开机,下键+开机键应该是recovery模式,但也是图中fastboot模式,现在不能进入系统。 我的手机密码忘记了,我的是华为C199,怎样可以不通过电脑刷机。是不是要按什么键 我的手机是华为-c199一关机就进入刷机模式,怎么办 华为麦芒C199急需获取root权限怎么弄 华为c199怎么刷机 整日无缘由的闷闷不乐,怎么办啊 华为c199能进入第三方recovery怎么用外置内存卡刷机 买房子曾经房主家里有佛像,准备请走,有什么说法没?我在住有不好的地方嘛? 凯登 克劳斯 笔仙,镜仙,碟仙,哪个危险度小点? 占卜出现十字架是什么意思 大劳克斯拥有几匹马 我想去教堂,听牧师传教 小克劳斯和大克劳斯概括+寓意 三月三十日布仑特原油价格 最新油价:WTI 53.80 ↑ 1.73 布伦特 53.47 ↑ 2.25 怎样用酱油腌制辣椒 我们家一年几乎都不在家的,冰箱大半年都没人用,该怎么保养呢?是要一直开着,还是要把插头拔掉? 华为麦芒C199s怎么进recovery 求教华为C199究竟怎么root HUAWEIc199最新版的root权限怎么获得 华为C199S如何进行root 博洋家纺的被子怎么洗 鹿城健康365居民扫码和鹿城健康码一样吗 家长的手机怎么给学生弄鹿城健康365 鹿城健康365怎么更新 鹿城健康365怎么解绑家人 鹿城健康365怎么查询有没有注册 只要有鹿城健康365健康码是不是每个医院都能进? 怎么将删除鹿城健康365公众号里的添加的挂号的人 怎么做ini文件 360借条借款额度评能在商城买东西吗。 360借款额度跟商城额度共享吗? 360借条额度不能使用看商城额度能冲直的? 梦见门面房被别人占了,打电话给房主,房主说我不租了? 梦见自己要租的门面被别人抢了 梦见自己的门面被前夫租出去了