zoukankan      html  css  js  c++  java
  • 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+"
    ");
                    }
                    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() + @"ProgramFeedBackSetting.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文件读写示例
  • 相关阅读:
    第二十次CSP考试有感
    chan数据结构实现原理
    记一次udp端口数据流过程
    Envoy 部署类型
    后K8S时代的微服务
    ESP32-使用有刷直流电机笔记
    ESP32-使用ADC笔记
    网络安全黑白名单设置
    网络安全并发数限制与连接频率限制
    apache与nginx服务器启用https功能
  • 原文地址:https://www.cnblogs.com/eye-like/p/3485535.html
Copyright © 2011-2022 走看看