C#操作文件的读取和修改

  • Post author:
  • Post category:其他


要处理的文件

读取

 static void Main(string[] args)
        {
            //设置路径
            string path = Directory.GetCurrentDirectory() + @"\configuration.ini";
            GetData(path);
        }


 /// <summary>
        /// 获取文件中的全部数据
        /// </summary>
        /// <param name="path">路径</param>
        public static void GetData(string path)
        {
            //获取文件路径
            string strFilePath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, path);
            if (File.Exists(strFilePath))
            {
                //读取全部数据
                string strContent = File.ReadAllText(strFilePath);
                //分割 微调 旋转 和密码
                string[] str = strContent.Split(';');
                foreach (var item in str)
                {
                    //微调速度
                    if (item.Contains("slight"))
                    {
                        string[] values = item.Split(':').Last().Split(',');
                        permanentSpeedSlight.Run = int.Parse(values[0]);
                        permanentSpeedSlight.Begin = int.Parse(values[1]);
                        permanentSpeedSlight.Stop = int.Parse(values[2]);
                        permanentSpeedSlight.AccTime = int.Parse(values[3]);
                        permanentSpeedSlight.DecTime = int.Parse(values[4]);
                    }
                    else if (item.Contains("rotating"))
                    {
                        //旋转速度
                        string[] values = item.Split(':').Last().Split(',');
                        permanentSpeedRotating.Run = int.Parse(values[0]);
                        permanentSpeedRotating.Begin = int.Parse(values[1]);
                        permanentSpeedRotating.Stop = int.Parse(values[2]);
                        permanentSpeedRotating.AccTime = int.Parse(values[3]);
                        permanentSpeedRotating.DecTime = int.Parse(values[4]);
                    }
                }
                //输出结果
                Console.WriteLine(permanentSpeedSlight.ToString());
                Console.WriteLine(permanentSpeedRotating.ToString());

            }
        }

修改

 static void Main(string[] args)
        {
            //设置路径
            string path = Directory.GetCurrentDirectory() + @"\configuration.ini";
            UpdateFile(path, "password","PPP");
        }


        /// <summary>
        /// 修改文件中的部分
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <param name="target">要修改的值</param>
        /// <param name="results">修改后的值</param>
        public static void UpdateFile(string path,string target,string results)
        {
            //获取文件路径
            string strFilePath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, path);
            //判断是否存在该文件
            if (File.Exists(strFilePath))
            {
                //读取文件的全部数据
                string strContent = File.ReadAllText(strFilePath);
                //处理要修改的文件
                strContent = Regex.Replace(strContent, target, results);
                //保存并关闭文件
                File.WriteAllText(strFilePath, strContent);
            }
        }

加密

const string Secret = "SAGA";    //定义密钥 

/// <summary> DES 加密字符串  
        /// </summary> 
        /// <param name="str">要加密的字符串</param> 
        /// <returns>加密后的字符串</returns> 
        public static string Encrypt(string str)
        {
            DESCryptoServiceProvider descsp = new DESCryptoServiceProvider();   //实例化加/解密类对象  
            byte[] key = Encoding.Unicode.GetBytes(Secret); //定义字节数组,用来存储密钥   
            byte[] data = Encoding.Unicode.GetBytes(str);//定义字节数组,用来存储要加密的字符串 
            MemoryStream MStream = new MemoryStream(); //实例化内存流对象     
            //使用内存流实例化加密流对象  
            CryptoStream CStream = new CryptoStream(MStream, descsp.CreateEncryptor(key, key), CryptoStreamMode.Write);
            CStream.Write(data, 0, data.Length);  //向加密流中写入数据     
            CStream.FlushFinalBlock();              //释放加密流     
            return Convert.ToBase64String(MStream.ToArray());//返回加密后的字符串 
        }



        /// <summary>
        /// MD5 不可逆加密
        /// </summary>
        /// <param name="strs"></param>
        /// <returns></returns>
        public static string ToMD5(string strs)
        {
            string cl = strs;
            string pwd = "";
            MD5 md5 = MD5.Create(); //实例化一个md5对像
                                    // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
            // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
            for (int i = 0; i < s.Length; i++)
            {
                // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
                pwd = pwd + s[i].ToString("X");
            }
            return pwd;
        }



版权声明:本文为saga661原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。