c# 文件操作 txt、xml、ini

1. txt文件

 /// <summary>
        /// 读文本文件信息
        /// </summary>
        /// <param name="FilePath"></param>
        /// <returns></returns>
        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文件操作
 /// <summary>
        /// 保存文本文件信息 
        /// </summary>
        /// <param name="psList">要写入文件的信息</param>
        /// <param name="filepath">存放文件的绝对路径</param>
        /// <returns></returns>
        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文件读写示例

 

posted on 2013-12-21 21:57  eye_like  阅读(839)  评论(0编辑  收藏  举报