INI配置文件读写工具类

来源:互联网 发布:手机视频格式转换软件 编辑:程序博客网 时间:2024/03/28 23:04

INI配置文件读写工具类

using System;using System.Collections.Generic;using System.Text;using System.Collections;using System.IO;namespace Yong.CommonLib{    /// <summary>    /// ini 配置文件读写    /// TODO:应该使用“单例”来创建实例,以提高效率    /// TODO:考虑使用Nini或Win32 api调用实现,好处:稳定代码,速度更快    /// Nini还可以读取配置文件和注册表    /// </summary>    public class CIni    {        private StreamReader aStreamReader;        private StreamWriter aStreamWriter;        private ArrayList aSegList = new ArrayList();        public string strLastError = "没有错误";        private string strRoot = "";        private string strKey = "";        struct StructSeg        {            public string strSeg;            public ArrayList ItemValue;            public StructSeg(string strSeg)            {                this.strSeg = strSeg;                ItemValue = new ArrayList();            }        }        /// <summary>        /// </summary>        public CIni()        {            //            // TODO: 在此处添加构造函数逻辑            //        }        /// <summary>        /// TODO:使用map优化!        /// </summary>        /// <returns></returns>        public int SetCrypto(string strSetKey)        {            byte[] aBytes = Encoding.GetEncoding("gb2312").GetBytes(strSetKey);            if (aBytes.Length != 8 && aBytes.Length != 16)            {                strLastError = "密钥长度错误";                return -1;            }            this.strKey = strSetKey;            return 0;        }        public int SetRoot(string strSetRoot)        {            strSetRoot = strSetRoot.Trim();            if (strSetRoot != "")            {                this.strRoot = strSetRoot + "\\";            }            else            {                this.strRoot = "";            }            return 0;        }        /// <summary>        /// 获取所有段中同名的项目的值        /// </summary>        /// <returns></returns>        public ArrayList getAllSegName()        {            ArrayList al = new ArrayList();            foreach (StructSeg aSeg in aSegList)            {                al.Add(trimBracket(aSeg.strSeg));            }            return al;        }        private string trimBracket(string source)        {            int begin = source.IndexOf('[');            int end = source.IndexOf(']');            if (begin >= end || begin < 0 || end < 0)            {                return source;            }            return source.Substring(begin + 1, end - begin - 1);        }        public int LoadFromString(string strContent)        {            try            {                byte[] byteContent = Encoding.GetEncoding("gb2312").GetBytes(strContent);                return LoadFromBytes(byteContent);            }            catch (Exception e)            {                strLastError = "加载失败,系统提示:" + e.Message;                return (-1);            }            finally            {                try                {                    aStreamReader.Close();                }                catch                {                }            }        }        public int LoadFromBytes(byte[] byteContent)        {            try            {                MemoryStream stream = new MemoryStream();                stream.Write(byteContent, 0, byteContent.Length);                stream.Flush();                stream.Position = 0;                aStreamReader = new StreamReader(stream, Encoding.GetEncoding("gb2312"));                return Load();            }            catch (Exception e)            {                strLastError = "加载失败,系统提示:" + e.Message;                return (-1);            }            finally            {                try                {                    aStreamReader.Close();                }                catch                {                }            }        }        private int Load()        {            try            {                aSegList = new ArrayList();                string strHead;                string aLine;                StructSeg aSeg = new StructSeg("[]");                while ((aLine = aStreamReader.ReadLine()) != null)                {                    aLine = aLine.Trim().TrimEnd(new char[] { '\0' });                    if (aLine.Length > 0)                    {                        strHead = aLine.Substring(0, 1);                    }                    else                    {                        continue;                    }                    if (strHead == "[")                    {                        aSegList.Add(aSeg);                        aSeg = new StructSeg(aLine);                    }                    else                    {                        aSeg.ItemValue.Add(aLine);                    }                }                aSegList.Add(aSeg);                return 0;            }            catch (Exception e)            {                strLastError = "加载失败,系统提示:" + e.Message;                return (-1);            }        }        public int Load(string strFileName)        {            ClassCrypto aClassCrypto = null;            try            {                if (strKey != "")                {                    aClassCrypto = new ClassCrypto(strKey);                    if (aClassCrypto.GetCryptoStreamReader(strFileName) < 0)                    {                        strLastError = aClassCrypto.strLastError;                        return -1;                    }                    aStreamReader = aClassCrypto.aReader;                }                else                {                    aStreamReader = new StreamReader(strFileName, Encoding.GetEncoding("gb2312"), true);                }                return Load();            }            catch (Exception e)            {                strLastError = "加载失败,系统提示:" + e.Message;                return (-1);            }            finally            {                try                {                    if (strKey != "")                    {                        aClassCrypto.CloseReader();                    }                    else                    {                        aStreamReader.Close();                    }                }                catch                {                }            }        }        public int PushToString(out string strContent)        {            strContent = null;            try            {                byte[] byteContent = null;                if (PushToBytes(out byteContent) < 0)                {                    return -1;                }                strContent = Encoding.GetEncoding("gb2312").GetString(byteContent, 0, byteContent.Length).Trim(new char[] { '\0' });                return 0;            }            catch (Exception e)            {                strLastError = "输出失败,系统提示:" + e.Message;                return (-1);            }        }        public int PushToBytes(out byte[] byteContent)        {            byteContent = null;            try            {                MemoryStream stream = new MemoryStream();                aStreamWriter = new StreamWriter(stream, Encoding.GetEncoding("gb2312"));                Push();                byteContent = stream.ToArray();                return 0;            }            catch (Exception e)            {                strLastError = "输出失败,系统提示:" + e.Message;                return (-1);            }            finally            {                try                {                    aStreamWriter.Close();                }                catch                {                }            }        }        public int Push(string strFileName)        {            ClassCrypto aClassCrypto = null;            try            {                if (strKey != "")                {                    aClassCrypto = new ClassCrypto(strKey);                    if (aClassCrypto.GetCryptoStreamWriter(strFileName) < 0)                    {                        strLastError = aClassCrypto.strLastError;                        return -1;                    }                    aStreamWriter = aClassCrypto.aWriter;                }                else                {                    aStreamWriter = new StreamWriter(strFileName, false, Encoding.GetEncoding("gb2312"));                }                return Push();            }            catch (Exception e)            {                strLastError = "写文件失败,系统提示:" + e.Message;                return (-1);            }            finally            {                if (strKey != "")                {                    aClassCrypto.CloseWriter();                }                else                {                    aStreamWriter.Close();                }            }        }        private int Push()        {            try            {                foreach (StructSeg aSeg in aSegList)                {                    if (aSeg.strSeg != "[]") aStreamWriter.WriteLine(aSeg.strSeg);                    //System.Windows.Forms.MessageBox.Show(aSeg.strSeg);                    foreach (string aLine in aSeg.ItemValue)                    {                        //System.Windows.Forms.MessageBox.Show(aLine);                        aStreamWriter.WriteLine(aLine);                    }                }                aStreamWriter.Flush();                return 0;            }            catch (Exception e)            {                strLastError = "输出失败,系统提示:" + e.Message;                return (-1);            }        }        public int GetIniItem(string strSeg, string strItem, out string strValue)        {            strSeg = "[" + strRoot + strSeg.Trim() + "]";            strValue = "";            try            {                foreach (StructSeg aSeg in aSegList)                {                    if (GetSeg(aSeg.strSeg).ToUpper() == strSeg.ToUpper())                    {                        foreach (string aLine in aSeg.ItemValue)                        {                            if (GetItem(aLine).ToUpper() == strItem.ToUpper())                            {                                strValue = GetValue(aLine);                                return (0);                            }                        }                    }                }                strLastError = "未找到数据:" + strSeg + " " + strItem;                return (-1);            }            catch (Exception e)            {                strLastError = "获取数据异常:" + strSeg + " " + strItem + " 系统提示:" + e.Message;                return (-2);            }        }        public int GetIniItemBlock(string strSeg, string strItem, out byte[] bytesValue)        {            strSeg = "[" + strRoot + strSeg.Trim() + "]";            bytesValue = new byte[0];            string strValue = "";            try            {                foreach (StructSeg aSeg in aSegList)                {                    if (GetSeg(aSeg.strSeg).ToUpper() == strSeg.ToUpper())                    {                        for (int i = 0; i < aSeg.ItemValue.Count; i++)                        {                            string aLine = (string)aSeg.ItemValue[i];                            if (GetItem(aLine).ToUpper() == strItem.ToUpper())                            {                                strValue = GetValue(aLine);                                if (strValue.EndsWith("-"))                                {                                    strValue = strValue.Substring(0, strValue.Length - 1);                                    for (int j = i + 1; j < aSeg.ItemValue.Count; j++)                                    {                                        aLine = (string)aSeg.ItemValue[j];                                        aLine = aLine.Trim();                                        if (!aLine.StartsWith(";-")) break;                                        aLine = aLine.Substring(2);                                        strValue += aLine;                                        if (!strValue.EndsWith("-")) break;                                        strValue = strValue.Substring(0, strValue.Length - 1);                                    }                                }                                try                                {                                    bytesValue = Convert.FromBase64String(strValue);                                }                                catch (Exception e)                                {                                    strLastError = "数据处理异常:" + strSeg + " " + strItem + " 系统提示:" + e.Message;                                    return (-1);                                }                                //if(HexToBytes(strValue,out bytesValue)!=0){                                //    return (-1);                                //}                                return (0);                            }                        }                    }                }                strLastError = "未找到数据:" + strSeg + " " + strItem;                return (-1);            }            catch (Exception e)            {                strLastError = "获取数据异常:" + strSeg + " " + strItem + " 系统提示:" + e.Message;                return (-2);            }        }        public int GetIniItem(string strSeg, string strItem, out int iValue)        {            string strValue;            iValue = 0;            int iRetCode = GetIniItem(strSeg, strItem, out strValue);            if (iRetCode < 0) return (iRetCode);            try            {                iValue = Convert.ToInt32(strValue);            }            catch            {            }            return (0);        }        public int GetIniItem(string strSeg, string strItem, out Single sValue)        {            string strValue;            sValue = 0f;            int iRetCode = GetIniItem(strSeg, strItem, out strValue);            if (iRetCode < 0) return (iRetCode);            try            {                sValue = Convert.ToSingle(strValue);            }            catch            {            }            return (0);        }        public int GetIniItem(string strSeg, string strItem, out bool bValue)        {            string strValue;            bValue = false;            int iRetCode = GetIniItem(strSeg, strItem, out strValue);            if (iRetCode < 0) return (iRetCode);            if (strValue == "true" || strValue == "TRUE" || strValue == "True" ||                strValue == "是" ||                strValue == "yes" || strValue == "YES" || strValue == "Yes")            {                bValue = true;            }            else            {                bValue = false;            }            return (0);        }        public int GetIniItem(string strSeg, string strItem, out byte[] byetsValue)        {            string strValue;            byetsValue = new byte[0];            int iRetCode = GetIniItem(strSeg, strItem, out strValue);            if (iRetCode < 0) return (iRetCode);            return (HexToBytes(strValue, out byetsValue));        }        public int SetIniItem(string strSeg, string strItem, byte[] bytesValue)        {            return (SetIniItem(strSeg, strItem, bytesValue, ""));        }        public int SetIniItem(string strSeg, string strItem, byte[] bytesValue, string strDescription)        {            string strHex;            int iRetCode = BytesToHex(out strHex, bytesValue);            if (iRetCode < 0) return (iRetCode);            return (SetIniItem(strSeg, strItem, strHex, strDescription));        }        public int SetIniItem(string strSeg, string strItem, bool bValue)        {            return (SetIniItem(strSeg, strItem, bValue, ""));        }        public int SetIniItem(string strSeg, string strItem, bool bValue, string strDescription)        {            return (SetIniItem(strSeg, strItem, bValue.ToString(), strDescription));        }        public int SetIniItem(string strSeg, string strItem, string strValue)        {            return (SetIniItem(strSeg, strItem, strValue, ""));        }        public int SetIniItem(string strSeg, string strItem, string strValue, string strDescription)        {            strSeg = "[" + strRoot + strSeg.Trim() + "]";            strValue = CheckValue(strValue);            string aNewLine = strItem + "\t=\t" + strValue;            StructSeg aSeg;            int i, j;            string aLine;            try            {                for (i = 0; i < aSegList.Count; i++)                {                    aSeg = (StructSeg)aSegList[i];                    if (GetSeg(aSeg.strSeg).ToUpper() == strSeg.ToUpper())                    {                        for (j = 0; j < aSeg.ItemValue.Count; j++)                        {                            aLine = (string)aSeg.ItemValue[j];                            if (GetItem(aLine).ToUpper() == strItem.ToUpper())                            {                                if (strDescription != "")                                {                                    aNewLine = aNewLine + "\t;" + strDescription;                                }                                else if (GetDescription(aLine) != "")                                {                                    aNewLine = aNewLine + "\t;" + GetDescription(aLine);                                }                                aSeg.ItemValue[j] = aNewLine;                                aSegList[i] = aSeg;                                return (0);                            }                        }                        if (strDescription != "") aNewLine = aNewLine + "\t;" + strDescription;                        aSeg.ItemValue.Add(aNewLine);                        aSegList[i] = aSeg;                        return (0);                    }                }                aSeg = new StructSeg(strSeg);                if (strDescription != "") aNewLine = aNewLine + "\t;" + strDescription;                aSeg.ItemValue.Add(aNewLine);                aSegList.Add(aSeg);                return (0);            }            catch (Exception e)            {                strLastError = "设置数据异常:" + strSeg + " " + strItem + " 系统提示:" + e.Message;                return (-2);            }        }        public int SetIniItemBlock(string strSeg, string strItem, byte[] bytesValue)        {            strSeg = "[" + strRoot + strSeg.Trim() + "]";            string strValue;            string[] strArray = new string[0];            //if (BytesToHex(out strValue, bytesValue) != 0) return -1;            try            {                strValue = Convert.ToBase64String(bytesValue);            }            catch (Exception e)            {                strLastError = "数据处理异常:" + strSeg + " " + strItem + " 系统提示:" + e.Message;                return -1;            }            string aNewLine = strItem + "\t=\t-";            int i, j;            i = (strValue.Length + 63) / 64;            if (i > 0)            {                strArray = new string[i];                for (j = 0; j < (i - 1); j++)                {                    strArray[j] = ";-" + strValue.Substring(j * 64, 64) + "-";                }                strArray[i - 1] = ";-" + strValue.Substring((i - 1) * 64);            }            StructSeg aSeg;            string aLine;            try            {                for (i = 0; i < aSegList.Count; i++)                {                    aSeg = (StructSeg)aSegList[i];                    if (GetSeg(aSeg.strSeg).ToUpper() == strSeg.ToUpper())                    {                        for (j = 0; j < aSeg.ItemValue.Count; j++)                        {                            aLine = (string)aSeg.ItemValue[j];                            if (GetItem(aLine).ToUpper() == strItem.ToUpper())                            {                                aSeg.ItemValue[j] = aNewLine;                                for (int k = j + 1; k < aSeg.ItemValue.Count; k++)                                {                                    aLine = (string)aSeg.ItemValue[k];                                    aLine = aLine.Trim();                                    if (aLine.StartsWith(";-"))                                    {                                        aSeg.ItemValue.RemoveAt(k);                                        k--;                                        continue;                                    }                                }                                for (int k = 0; k < strArray.Length; k++)                                {                                    aSeg.ItemValue.Insert(j + k + 1, strArray[k]);                                }                                aSegList[i] = aSeg;                                return (0);                            }                        }                        aSeg.ItemValue.Add(aNewLine);                        for (int k = 0; k < strArray.Length; k++)                        {                            aSeg.ItemValue.Add(strArray[k]);                        }                        aSegList[i] = aSeg;                        return (0);                    }                }                aSeg = new StructSeg(strSeg);                aSeg.ItemValue.Add(aNewLine);                for (int k = 0; k < strArray.Length; k++)                {                    aSeg.ItemValue.Add(strArray[k]);                }                aSegList[i] = aSeg;                aSegList.Add(aSeg);                return (0);            }            catch (Exception e)            {                strLastError = "设置数据异常:" + strSeg + " " + strItem + " 系统提示:" + e.Message;                return (-2);            }        }        public int RemoveIniItem(string strSeg, string strItem)        {            strSeg = "[" + strRoot + strSeg.Trim() + "]";            StructSeg aSeg;            int i, j;            string aLine;            try            {                for (i = 0; i < aSegList.Count; i++)                {                    aSeg = (StructSeg)aSegList[i];                    if (GetSeg(aSeg.strSeg).ToUpper() == strSeg.ToUpper())                    {                        for (j = 0; j < aSeg.ItemValue.Count; j++)                        {                            aLine = (string)aSeg.ItemValue[j];                            if (GetItem(aLine).ToUpper() == strItem.ToUpper())                            {                                aSeg.ItemValue.RemoveAt(j);                                aSegList[i] = aSeg;                                break;                            }                        }                        if (aSeg.ItemValue.Count <= 0)                        {                            aSegList.RemoveAt(i);                        }                        break;                    }                }                return (0);            }            catch (Exception e)            {                strLastError = "删除数据异常:" + strSeg + " " + strItem + " 系统提示:" + e.Message;                return (-2);            }        }        private string Clear(string aLine)        {            int iPos = 0;            while ((iPos = aLine.IndexOf(';', iPos)) >= 0)            {                if (iPos == 0) break;                if (aLine.Substring(iPos - 1, 1) != "\\") break;                iPos++;            }            if (iPos >= 0) aLine = aLine.Substring(0, iPos);            aLine = aLine.Trim();            return (aLine);        }        private string GetSeg(string aLine)        {            aLine = Clear(aLine);            return (aLine);        }        private string GetItem(string aLine)        {            aLine = Clear(aLine);            string[] strArray = aLine.Split("=".ToCharArray());            return (strArray[0].Trim());        }        private string GetValue(string aLine)        {            aLine = Clear(aLine);            int iPos = aLine.IndexOf("=");            if (iPos >= 0 && iPos < (aLine.Length - 1))            {                aLine = aLine.Substring(iPos + 1).Trim() + " ";                iPos = 0;                while ((iPos = aLine.IndexOf('\\', iPos)) >= 0)                {                    switch (aLine.Substring(iPos + 1, 1))                    {                        case "r":                            aLine = aLine.Substring(0, iPos) + "\r" + aLine.Substring(iPos + 2);                            break;                        case "n":                            aLine = aLine.Substring(0, iPos) + "\n" + aLine.Substring(iPos + 2);                            break;                        case "t":                            aLine = aLine.Substring(0, iPos) + "\t" + aLine.Substring(iPos + 2);                            break;                        default:                            aLine = aLine.Substring(0, iPos) + aLine.Substring(iPos + 1);                            break;                    }                    iPos += 1;                }                return (aLine.Trim());            }            else            {                return ("");            }        }        private string CheckValue(string strValue)        {            int iPos = 0;            while ((iPos = strValue.IndexOf('\\', iPos)) >= 0)            {                strValue = strValue.Substring(0, iPos) + "\\" + strValue.Substring(iPos);                iPos += 2;            }            iPos = 0;            while ((iPos = strValue.IndexOf(';', iPos)) >= 0)            {                strValue = strValue.Substring(0, iPos) + "\\" + strValue.Substring(iPos);                iPos += 2;            }            iPos = 0;            while ((iPos = strValue.IndexOf('\r', iPos)) >= 0)            {                strValue = strValue.Substring(0, iPos) + "\\r" + strValue.Substring(iPos + 1);                iPos += 3;                if (iPos >= strValue.Length) break;            }            iPos = 0;            while ((iPos = strValue.IndexOf('\n', iPos)) >= 0)            {                strValue = strValue.Substring(0, iPos) + "\\n" + strValue.Substring(iPos + 1);                iPos += 3;                if (iPos >= strValue.Length) break;            }            iPos = 0;            while ((iPos = strValue.IndexOf('\t', iPos)) >= 0)            {                strValue = strValue.Substring(0, iPos) + "\\t" + strValue.Substring(iPos + 1);                iPos += 3;                if (iPos >= strValue.Length) break;            }            return (strValue);        }        private string GetDescription(string aLine)        {            int iPos = 0;            while ((iPos = aLine.IndexOf(';', iPos)) >= 0)            {                if (iPos == 0) break;                if (aLine.Substring(iPos - 1, 1) != "\\") break;                iPos++;            }            if (iPos >= 0)            {                aLine = aLine.Substring(iPos + 1);            }            else            {                aLine = "";            }            aLine = aLine.Trim();            return (aLine);        }        /// <summary>        /// TODO:应该放在公共库中        /// </summary>        /// <param name="strHex"></param>        /// <param name="aBytes"></param>        /// <returns></returns>        public int HexToBytes(string strHex, out byte[] aBytes)        {            strHex = strHex.ToUpper();            char[] tmpCharArray = strHex.ToCharArray();            aBytes = new byte[0];            if ((tmpCharArray.Length % 2) != 0)            {                strLastError = "HEX数据长度错误";                return (-1);            }            aBytes = new byte[tmpCharArray.Length / 2];            for (int i = 0; i < tmpCharArray.Length; i += 2)            {                if (tmpCharArray[i] >= 'A' && tmpCharArray[i] <= 'F')                {                    aBytes[i / 2] = (byte)((tmpCharArray[i] - 'A' + 10) * 16);                }                else if (tmpCharArray[i] >= '0' && tmpCharArray[i] <= '9')                {                    aBytes[i / 2] = (byte)((tmpCharArray[i] - '0') * 16);                }                else                {                    strLastError = "HEX数据中有非法字符";                    return (-1);                }                if (tmpCharArray[i + 1] >= 'A' && tmpCharArray[i + 1] <= 'F')                {                    aBytes[i / 2] += (byte)((tmpCharArray[i + 1] - 'A' + 10));                }                else if (tmpCharArray[i + 1] >= '0' && tmpCharArray[i + 1] <= '9')                {                    aBytes[i / 2] += (byte)((tmpCharArray[i + 1] - '0'));                }                else                {                    strLastError = "HEX数据中有非法字符";                    return (-1);                }            }            return (0);        }        /// <summary>        /// TODO:应该放在公共库中        /// </summary>        /// <param name="strHex"></param>        /// <param name="aBytes"></param>        /// <returns></returns>        public int BytesToHex(out string strHex, byte[] aBytes)        {            strHex = "";            int iBlock = aBytes.Length / 16;            int i, j;            for (j = 0; j < iBlock; j++)            {                i = j * 16;                strHex += String.Format("{0:X2}{1:X2}{2:X2}{3:X2}{4:X2}{5:X2}{6:X2}{7:X2}{8:X2}{9:X2}{10:X2}{11:X2}{12:X2}{13:X2}{14:X2}{15:X2}",                    aBytes[i], aBytes[i + 1], aBytes[i + 2], aBytes[i + 3], aBytes[i + 4], aBytes[i + 5], aBytes[i + 6], aBytes[i + 7],                    aBytes[i + 8], aBytes[i + 9], aBytes[i + 10], aBytes[i + 11], aBytes[i + 12], aBytes[i + 13], aBytes[i + 14], aBytes[i + 15]);            }            for (i = iBlock * 16; i < aBytes.Length; i++)            {                strHex += String.Format("{0:X2}", aBytes[i]);            }            return (0);        }    }}

ClassCryptole类:

using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using System.IO;namespace Yong.CommonLib{    public class ClassCrypto    {        private string strKey = "12345678";        public StreamReader aReader;        public StreamWriter aWriter;        private FileStream aFileStreamRead;        private FileStream aFileStreamWrite;        private CryptoStream aCryptoStreamRead;        private CryptoStream aCryptoStreamWrite;        private DESCryptoServiceProvider aDes;        public string strLastError = "";        public ClassCrypto()        {            aDes = new DESCryptoServiceProvider();            aDes.Key = Encoding.ASCII.GetBytes(strKey);            aDes.IV = Encoding.ASCII.GetBytes(strKey);        }        public ClassCrypto(string _strKey)        {            strKey = _strKey;            aDes = new DESCryptoServiceProvider();            aDes.Key = Encoding.ASCII.GetBytes(strKey);            aDes.IV = Encoding.ASCII.GetBytes(strKey);        }        public int GetCryptoStreamReader(string strFileName)        {            return GetCryptoStreamReader(strFileName, Encoding.Default);        }        public int GetCryptoStreamReader(string strFileName, Encoding aEncoding)        {            try            {                ICryptoTransform desencrypt = aDes.CreateDecryptor();                aFileStreamRead = new FileStream(strFileName, FileMode.Open);                aCryptoStreamRead = new CryptoStream(aFileStreamRead, desencrypt, CryptoStreamMode.Read);                aReader = new StreamReader(aCryptoStreamRead, aEncoding, true);                return 0;            }            catch (Exception e)            {                strLastError = "在打开文件" + strFileName + "时发生异常" + e.Message;                return -1;            }        }        public int GetCryptoStreamReader(string strFileName, Encoding aEncoding, int bufferSize)        {            try            {                ICryptoTransform desencrypt = aDes.CreateDecryptor();                aFileStreamRead = new FileStream(strFileName, FileMode.Open);                aCryptoStreamRead = new CryptoStream(aFileStreamRead, desencrypt, CryptoStreamMode.Read);                aReader = new StreamReader(aCryptoStreamRead, aEncoding, true, bufferSize);                return 0;            }            catch (Exception e)            {                strLastError = "在打开文件" + strFileName + "时发生异常" + e.Message;                return -1;            }        }        public int GetCryptoStreamWriter(string strFileName)        {            return GetCryptoStreamWriter(strFileName, false, Encoding.Default);        }        public int GetCryptoStreamWriter(string strFileName, bool append, Encoding aEncoding)        {            try            {                ICryptoTransform desencrypt = aDes.CreateEncryptor();                if (append)                {                    aFileStreamWrite = new FileStream(strFileName, FileMode.Append);                }                else                {                    aFileStreamWrite = new FileStream(strFileName, FileMode.Create);                }                aCryptoStreamWrite = new CryptoStream(aFileStreamWrite, desencrypt, CryptoStreamMode.Write);                aWriter = new StreamWriter(aCryptoStreamWrite, aEncoding);                return 0;            }            catch (Exception e)            {                strLastError = "在打开文件" + strFileName + "时发生异常" + e.Message;                return -1;            }        }        public int CloseWriter()        {            try            {                aWriter.Close();            }            catch            {            } try            {                aCryptoStreamWrite.Close();            }            catch { }            try            {                aFileStreamWrite.Close();            }            catch (Exception e)            {                strLastError = "在关闭输出文件时发生异常:" + e.Message;                return -1;            }            return 0;        }        public int CloseReader()        {            try            {                aReader.Close();            }            catch { }            try            {                aCryptoStreamRead.Close();            }            catch { }            try            {                aFileStreamRead.Close();            }            catch (Exception e)            {                strLastError = "在关闭输入文件时发生异常:" + e.Message;                return -1;            }            return 0;        }    }}


0 0
原创粉丝点击