c# 文件操作 txt、xml、ini

1. txt文件

 /// /// 读文本文件信息/// /// /// public static List<string> ReadTxtFile(string FilePath){List<string> strList = new List<string>();System.IO.FileStream FS = null;System.IO.StreamReader SR = null;if (System.IO.File.Exists(FilePath) ){try{if (strList == null)strList = new List<string>();//using自动释放资源using (FS = new System.IO.FileStream(FilePath, System.IO.FileMode.Open)){SR = new System.IO.StreamReader(FS, System.Text.Encoding.Default);string Line = null;System.Drawing.Color color = new System.Drawing.Color();string[] rgb = new string[4];for (Line = SR.ReadLine(); Line != null; Line = SR.ReadLine()){if (!(Line.Trim() == "")){strList.Add(Line);}}}}catch (Exception ex){throw (ex);}finally{if (SR != null){SR.Dispose();SR.Close();}if (FS != null){FS.Dispose();FS.Close();}}}else{strList = null;}return strList;}
读txt文件操作
 /// /// 保存文本文件信息 /// /// 要写入文件的信息/// 存放文件的绝对路径/// public static bool SaveToTxtFile(List<string> psList,string filepath){bool bResult = false;System.IO.FileStream FS = null;System.IO.StreamWriter SW = null;try{//新建文件流FS = new System.IO.FileStream(filepath, System.IO.FileMode.Create, System.IO.FileAccess.Write);//建立文件对应的输入流SW = new System.IO.StreamWriter(FS);foreach (string ps in psList){SW.Write(ps+"\r\n");}bResult = true;}catch{bResult = false;}finally{if (SW != null){SW.Close();}if (FS != null){FS.Close();}}return bResult;}
写txt文件操作

2. xml文件

 XmlDocument xmldoc = new XmlDocument();//声明一个xml文档操作类的新实例string path = System.Windows.Forms.Application.StartupPath + @"../../../";Directory.SetCurrentDirectory(path);string portpath = Directory.GetCurrentDirectory() + @"\Program\FeedBackSetting.xml";//存放xml文件的绝对路径
                xmldoc.Load(portpath);XmlNode node = xmldoc.SelectSingleNode("FeedBack");//找到xml中的一个节点
node.SelectSingleNode("ThreShold").InnerText = txtThreshold.Text;node.SelectSingleNode("Sensitivity").InnerText = txtSensitivity.Text;node.SelectSingleNode("Speed").InnerText = txtSpeed.Text;xmldoc.Save(portpath);
XML文件读、修改操作

c#代码创建xml文件在看下??

3. ini文件

    INI文件就是扩展名为“ini”的文件。在Windows系统中,INI文件是很多,最重要的就是“System.ini”、“System32.ini”和“Win.ini”。该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使应用程序和系统都把许多参数和初始化信息放进了注册表中。但在某些场合,INI文件还拥有其不可替代的地位。

INI文件的结构
INI文件是一种按照特点方式排列的文本文件。每一个INI文件构成都非常类似,由若干段落(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(keyword)和一个等号,等号右边的就是关键字对应的值(value)。其一般形式如下:
[Section1]
  KeyWord1 = Valuel
  KeyWord2 = Value2
   ……
[Section2]
  KeyWord3 = Value3
  KeyWord4 = Value4

注意:ini文件的第一行需要空出,不保留任何信息。(因项目中经常出现因为ini文件的数据顶格而产生的各种问题)

C#和Win32 API函数

        C#并不像C++,拥有属于自己的类库。C#使用的类库是.Net框架为所有.Net程序开发提供的一个共有的类库——.Net FrameWork SDK。虽然.Net FrameWork SDK内容十分庞大,功能也非常强大,但还不能面面俱到,至少它并没有提供直接操作INI文件所需要的相关的类。在本文中,C#操作INI文件使用的是Windows系统自带Win32的API函数——WritePrivateProfileString()和GetPrivateProfileString()函数。这二个函数都位于“kernel32.dll”文件中。

        我们知道在C#中使用的类库都是托管代码(Managed Code)文件,而Win32的API函数所处的文件,都是非托管代码(Unmanaged Code)文件。这就导致了在C#中不可能直接使用这些非托管代码文件中的函数。好在.Net框架为了保持对下的兼容,也为了充分利用以前的资源,提出了互操作,通过互操作可以实现对Win32的API函数的调用。互操作不仅适用于Win32的API函数,还可以用来访问托管的COM对象。C#中对Win32的API函数的互操作是通过命名空间“System.Runtime.InteropServices”中的“DllImport”特征类来实现的。它的主要作用是指示此属性化方法是作为非托管DLL的输出实现的。下面代码就是在C#利用命名空间“System.Runtime.InteropServices”中的“DllImport”特征类申明上面二个Win32的API函数:

        C#申明INI文件的写操作函数WritePrivateProfileString():

         [ DllImport ( "kernel32" ) ]

         private static extern long WritePrivateProfileString ( string section , string key , string val , string filePath ) ; 

    参数说明:section:INI文件中的段落;key:INI文件中的关键字;val:INI文件中关键字的数值;filePath:INI文件的完整的路径和名称。

C#申明INI文件的读操作函数GetPrivateProfileString():

         [ DllImport ( "kernel32" ) ]

         private static extern int GetPrivateProfileString ( string section ,string key , string def , StringBuilder retVal , int size , string filePath ) ;

    参数说明:section:INI文件中的段落名称;key:INI文件中的关键字;def:无法读取时候时候的缺省数值;retVal:读取数值;size:数值的大小;filePath:INI文件的完整路径和名称。

using System.Runtime.InteropServices;#region ini文件读写/*写数据函数参数说明:* section:INI文件中的段落;* key:INI文件中的关键字;* val:INI文件中关键字的数值;* filePath:INI文件的完整的路径和名称。 
*/        [DllImport("kernel32")]public static extern long WritePrivateProfileString(string section, string key, string val, string filePath);/*读数据函数参数说明:section:INI文件中的段落名称;* key:INI文件中的关键字;* def:无法读取时候时候的缺省数值;* retVal:读取数值;* size:数值的大小;* filePath:INI文件的完整路径和名称。 */[DllImport("kernel32")]public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); #endregion //获取ini文件private string GetPortName(){string port = "";                  string section = "COM";//INI文件中的段落名称string key = "PortName";StringBuilder temp = new StringBuilder(255);string filepath = Application.StartupPath + @"\Amp.ini";try{Common.GetPrivateProfileString(section, key, "没有找到配置数据!", temp, 255, filepath);port = temp.ToString();if (port == "没有找到配置数据!"){port = "";}}catch{port = "";}return port;}//保存ini文件private void SaveToAmpIni(string section, string key, string val){string filename = Application.StartupPath + @"\Amp.ini";Common.WritePrivateProfileString(section, key, val, filename);}
ini文件读写示例

 

转载于:https://www.cnblogs.com/eye-like/p/3485535.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部