基于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

ini:

  #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:
在处理xml文件时,应当注意xml文件的各级节点的名字的要求,xml文件的二级节点名不能以数字和特殊字符开头(’_'除外),文件名不能以特殊字符开头。

        /// <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("删除成功");
            }
        }

以上为这些文件的常用基本操作的部分方法,如有问题或补充欢迎各位指正。
完整源码及dll文件:
链接:https://pan.baidu.com/s/1k0g9wZl_ZWbhqSv5jF9rcw 提取码:kp2o

猜你喜欢

转载自blog.csdn.net/Iawfy_/article/details/115295444