Basic operations of common files based on c#

在用c#做项目时,尤其是配置文件时,会遇到各种文件的操作处理。所以,我将几种常见的文件操作处理方法整理了一下,如有问题,欢迎指正。

txt:
      #region txt
        /// <summary>
        /// 创建一个空的txt
        /// </summary>
        /// <param name="FileName">路径文件名带后缀</param>
        public void Create_txt(string FileName)
        {
    
    
            StreamWriter sw = new StreamWriter(FileName);
            sw.Close();
        }

        /// <summary>
        /// 写入txt
        /// </summary>
        /// <param name="FileName">路径文件名带后缀</param>
        /// <param name="condition">true为追加写入,false为覆盖写入</param>
        /// <param name="s">写入数据</param>
        public void WriteData_txt(string FileName, bool condition, string s)
        {
    
    
            StreamWriter sw = new StreamWriter(FileName, condition);
            sw.WriteLine(s);
            sw.Close();
        }

        /// <summary>
        /// 读取txt '_' ',' 为截取符
        /// </summary>
        /// <param name="FileName">路径文件名带后缀</param>
        /// <param name="listbox">读取内容显示</param>
        public void ReadData_txt(string FileName, ListBox listbox)
        {
    
    
            listbox.Items.Clear();
            string ORead;
            string[] splitstrings;
            using (StreamReader sr = new StreamReader(FileName))
            {
    
    
                while (sr.Peek() >= 0)
                {
    
    
                    ORead = sr.ReadLine();
                    //截取
                    char[] separator = {
    
     '_', ',' };
                    splitstrings = ORead.Split(separator);
                    for (int i = 0; i < splitstrings.Length; i++)
                    {
    
    
                        listbox.Items.Add(splitstrings[i] + '\n');
                    }
                }
                sr.Close();
            }
        }
        #endregion
csv:
        #region csv
        /// <summary>
        /// 创建一个空的csv文件
        /// </summary>
        /// <param name="path">路径</param>
        /// <param name="filename">文件名带后缀</param>
        public static void CreateCsv(string path, string filename)
        {
    
    
            if (File.Exists(Path.Combine(path, filename)))
            {
    
    
                MessageBox.Show("该文件已存在", "错误");
            }
            else
            {
    
    
                string s = path + filename;
                StreamWriter sw = new StreamWriter(s);
                //sw.WriteLine("");
                sw.Close();
                sw.Dispose();
                MessageBox.Show("创建成功");
            }
        }
        /// <summary>
        /// 向csv文件中写入数据
        /// </summary>
        /// <param name="path">路径</param>
        /// <param name="filename">文件名带后缀</param>
        /// <param name="s">写入数据</param>
        /// <param name="confdition">true为追加写入,false为覆盖写入</param>
        public static void WriteCsv(string path, string filename, string s, bool confdition)
        {
    
    
            StreamWriter sw = new StreamWriter(path + filename, confdition);
            //自动以','分隔开
            sw.WriteLine(s);
            sw.Close();
            sw.Dispose();
        }
        #endregion

This:

  #region 写入ini
        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

        /// <summary>
        /// 写入ini文档,若文件不存在则自动创建
        /// </summary>
        /// <param name="path">ini文档路径文件名带后缀</param>
        /// <param name="section">片段</param>
        /// <param name="key">关键字</param>
        /// <param name="value">值</param>
        public static void Write_ini(string path, string section, string key, string value)
        {
    
    
            if (string.IsNullOrEmpty(section) || string.IsNullOrEmpty(key) || string.IsNullOrEmpty(value))
            {
    
    
                MessageBox.Show("节点,键,值不能为空");
            }
            else
            {
    
    
                // section=配置节,key=键名,value=键值,path=路径
                WritePrivateProfileString(section, key, value, path);
                MessageBox.Show("写入成功");
            }

        }
        /// <summary>
        /// 删除ini文件指定的section
        /// </summary>
        /// <param name="filename">路径文件名加后缀</param>
        /// <param name="section">删除section</param>
        public static void Delete_section(string filename, string section)
        {
    
    
            WritePrivateProfileString(section, null, null, filename);
            MessageBox.Show("删除成功");
        }

        /// <summary>
        /// 删除ini文件指定section下的某个key
        /// </summary>
        /// <param name="path">路径文件名加后缀</param>
        /// <param name="section">指定section</param>
        /// <param name="key">所删除key</param>
        public static void Delete_key(string path, string section, string key)
        {
    
    
            WritePrivateProfileString(section, key, null, path);
        }
        /// <summary>
        /// 在ini文件中指定section下批量写入键、值
        /// </summary>
        /// <param name="path">路径文件名加后缀</param>
        /// <param name="section">指定section</param>
        /// <param name="keys">键集合</param>
        /// <param name="values">值集合</param>
        public static void WriteGroup_ini(string path, string section, string[] keys, string[] values)
        {
    
    
            if (keys.Length != values.Length)
            {
    
    
                MessageBox.Show("输入键与值个数不同");
            }
            else
            {
    
    
                for (int i = 0; i < keys.Length; i++)
                {
    
    
                    WritePrivateProfileString(section, keys[i], values[i], path);
                }
                MessageBox.Show("写入成功");
            }
        }
        #endregion 

xml:
When processing xml files, you should pay attention to the requirements for the names of nodes at all levels in xml files. The names of secondary nodes in xml files cannot start with numbers and special characters (except '_'), and file names cannot start with special characters.

        /// <summary>
        /// 判断字符串是否以数字或者特殊字符开头 ,"_"除外
        /// </summary>
        /// <param name="s">输入字符串</param>
        /// <returns>true为数字或者特殊字符开头,false则不是</returns>
        public static bool IsCharBegin(string s)
        {
    
    
            if (char.IsDigit(s[0]))
                return true;
            else
            {
    
    
                if (s.StartsWith("_") || char.IsLetter(s[0]))
                    return false;
                else
                    return true;
            }
        }

        /// <summary>
        /// 判断字符串是否以特殊字符开头
        /// </summary>
        /// <param name="s">输入字符串</param>
        /// <returns>true为特殊字符开头</returns>
        public static bool IsCNBegin(string s)
        {
    
    
            if (char.IsDigit(s[0]) || s.StartsWith("_") || char.IsLetter(s[0]))
                return false;
            else
                return true;
        }
        /// <summary>
        /// 创建一个空的xml文档
        /// </summary>
        /// <param name="FileName">路径文件名带后缀</param>
        /// <param name="root">根节点名</param>
        public static void CreateXML(string FileName, string root)
        {
    
    
            XmlDocument XDoc = new XmlDocument();
            XmlDeclaration declaration = XDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
            XDoc.AppendChild(declaration);
            XmlElement elem = XDoc.CreateElement(root);
            XDoc.AppendChild(elem);
            XDoc.Save(FileName);

        }
        /// <summary>
        /// 读取显示整个xml文档
        /// </summary>
        /// <param name="FileName">路径文件名带后缀</param>
        /// <param name="listBox">读取内容显示</param>
        public static void ReadXml_All(string FileName, ListBox listBox)
        {
    
    
            listBox.Items.Clear();
            listBox.Items.Add("文件名:");
            listBox.Items.Add(FileName);
            listBox.Items.Add("  ");
            listBox.Items.Add("<?xml version=\"1.0\" encoding=\"UTF-8\"?> ");           
            XDocument doc = XDocument.Load(FileName);
            XElement root = doc.Root;
            listBox.Items.Add("<" + root.Name + ">");
            IEnumerable<XElement> listnode = root.Elements();

            foreach (XElement item in listnode)
            {
    
    
                listBox.Items.Add("  <" + item.Name + ">");
                var nodes = item.Elements();
                foreach (var noddd in nodes)
                {
    
    
                    listBox.Items.Add("       " + noddd);
                }
                listBox.Items.Add("  </" + item.Name + ">");
            }
            listBox.Items.Add("</" + root.Name + ">");
        }
      /// <summary>
        /// 删除整个xml文档
        /// </summary>
        /// <param name="FileName">路径文件名带后缀</param>
        public static void RemoveXmlAll(string FileName)
        {
    
    
            if (!File.Exists(FileName))
            {
    
    
                MessageBox.Show("该路径下无此Xml文档", "删除失败");
            }
            else
            {
    
    
                File.Delete(FileName);
                MessageBox.Show("删除成功");
            }
        }

The above are some of the common basic operations of these files. If you have any questions or supplements, please correct me.
Complete source code and dll files:
Link: https://pan.baidu.com/s/1k0g9wZl_ZWbhqSv5jF9rcw Extraction code: kp2o

Guess you like

Origin blog.csdn.net/Iawfy_/article/details/115295444