Esempio n. 1
0
        public object Convert(object[] values, Type targetTypes, object parameter, System.Globalization.CultureInfo culture)
        {
            double result = System.Convert.ToDouble(values[0]);

            bool first = true;

            foreach (var item in values)
            {
                //去掉第一个
                if (first)
                {
                    first = false; continue;
                }
                result /= System.Convert.ToDouble(item);
            }

            //获取参数
            StringGroup paramValues = new StringGroup(System.Convert.ToString(parameter), ",");

            if (paramValues.ToString() != "")
            {
                foreach (var item in paramValues.ToStringGroup())
                {
                    result /= double.Parse(item);
                }
            }

            //返回
            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// 设置输出的目录
        /// </summary>
        /// <param name="folderPath"></param>
        public void SetFolder(string folderPath)
        {
            StringGroup sg = new StringGroup(ResourcesFiles, ",");

            string[] fileArray = sg.ToStringGroup();
            foreach (string item in fileArray)
            {
                File.Delete(folderPath + item);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 检测文件夹下是否存在需要打包的文件
        /// </summary>
        /// <param name="folderPath">文件夹,需要加\</param>
        /// <returns></returns>
        public bool CheckFolder(string folderPath)
        {
            StringGroup sg = new StringGroup(ResourcesFiles, ",");

            string[] fileArray = sg.ToStringGroup();
            //判断
            foreach (string item in fileArray)
            {
                if (File.Exists(folderPath + item) == false)
                {
                    return(false);
                }
            }
            return(true);
        }
Esempio n. 4
0
        public void ConvertToResources(Tools.StringGroup value)
        {
            if (value.sourceString == "")
            {
                return;
            }

            //处理文件数据
            string[] result = value.ToStringGroup();
            stopName = result[0];

            var cache = new StringGroup(result[1], ",");

            foreach (string item in cache.ToStringGroup())
            {
                stopExit.Add(new StringGroup(item, "#"));
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 用字符列表填充字符串中的残缺部分
        /// </summary>
        /// <param name="originalStr">要填充的字符串</param>
        /// <param name="blockList">填充字符列表</param>
        /// <returns></returns>
        public static string FillStringByList(string originalStr, StringGroup blockList)
        {
            var cache = blockList.ToStringGroup();

            if (cache.Length == 0)
            {
                return(originalStr);
            }

            int index = 0;

            foreach (string item in cache)
            {
                originalStr.Replace("{" + index.ToString() + "}", item);
                index++;
            }

            return(originalStr);
        }
Esempio n. 6
0
        public object Convert(object[] values, Type targetTypes, object parameter, System.Globalization.CultureInfo culture)
        {
            double result = 0;

            foreach (var item in values)
            {
                result *= System.Convert.ToDouble(item);
            }

            //获取参数
            StringGroup paramValues = new StringGroup(System.Convert.ToString(parameter), ",");

            if (paramValues.ToString() != "")
            {
                foreach (var item in paramValues.ToStringGroup())
                {
                    result *= double.Parse(item);
                }
            }

            //返回
            return(result);
        }
Esempio n. 7
0
        /// <summary>
        /// 压缩文件,返回true表示成功,false表示失败
        /// </summary>
        /// <param name="outFilePath">输出文件的绝对目录</param>
        /// <param name="fileFolder">输入文件所在的文件夹,需要加\</param>
        /// <param name="fileVersion">需要输入的build版本号</param>
        /// <returns></returns>
        public bool Compress(string outFilePath, string fileFolder, long fileVersion)
        {
            //检查
            if (CheckFolder(fileFolder) == false)
            {
                return(false);
            }
            if (File.Exists(outFilePath) == true)
            {
                File.Delete(outFilePath);
            }

            //开始保存
            FileStream   outFile = new FileStream(outFilePath, FileMode.Create, FileAccess.Write, FileShare.Write);
            BinaryReader br;
            BinaryWriter bw = new BinaryWriter(outFile, System.Text.Encoding.UTF8);

            StringGroup sg = new StringGroup(ResourcesFiles, ",");

            string[] fileArray = sg.ToStringGroup();

            FileStream intoFile;

            //计量数据数字的变量
            //char以1000为基数读取,读不完就写
            Int64     charCount     = 0;
            ArrayList fileCountList = new ArrayList();

            //先乱写文件头
            bw.Write("BRSP".ToCharArray());
            for (int a = 0; a < fileArray.Length; a++)
            {
                bw.Write((Int64)0);
            }

            //读取文件写入
            for (int a = 0; a < fileArray.Length; a++)
            {
                intoFile = new FileStream(fileFolder + fileArray[a], FileMode.Open, FileAccess.Read, FileShare.Read);
                br       = new BinaryReader(intoFile, System.Text.Encoding.UTF8);

                //读取循环
                while (true)
                {
                    //先读取那么多
                    char[] cacheChar = br.ReadChars(1000);

                    //如果为0,没有内容,不结束读取
                    if (cacheChar.Length == 0)
                    {
                        break;
                    }

                    //读取数量不足,说明也到文件尾了
                    if (cacheChar.Length < 1000)
                    {
                        charCount += cacheChar.Length;
                        bw.Write(cacheChar);
                        break;
                    }
                    else
                    {
                        //继续读取
                        charCount += 1000;
                        bw.Write(cacheChar);
                    }
                }

                //善后处理
                br.Dispose();
                intoFile.Dispose();

                fileCountList.Add(charCount);
                charCount = 0;
            }

            //==============================结束各个变量,准备覆写
            bw.Dispose();
            outFile.Dispose();

            //覆写
            FileStream   outFileProcess = new FileStream(outFilePath, FileMode.Open, FileAccess.Write, FileShare.Write);
            BinaryWriter bwProcess      = new BinaryWriter(outFileProcess, System.Text.Encoding.UTF8);

            //写文件头
            bwProcess.Write("BRSP".ToCharArray());
            bwProcess.Write(fileVersion);
            for (int a = 0; a < fileArray.Length; a++)
            {
                bwProcess.Write((Int64)fileCountList[a]);
            }

            bwProcess.Dispose();
            outFileProcess.Dispose();

            return(true);
        }
Esempio n. 8
0
        /// <summary>
        /// 解压缩文件,返回true表示成功,false表示失败
        /// </summary>
        /// <param name="filePath">包文件的绝对目录</param>
        /// <param name="outFileFolder">输出文件所在的文件夹,需要加\</param>
        /// <param name="fileVersion">需要验证的build版本号</param>
        /// <returns></returns>
        public bool Decompress(string filePath, string outFileFolder, long fileVersion)
        {
            //检测
            if (File.Exists(filePath) == false)
            {
                return(false);
            }

            //开始读取
            FileStream   intoFile = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
            BinaryReader br       = new BinaryReader(intoFile, System.Text.Encoding.UTF8);
            FileStream   outFile;
            BinaryWriter bw;

            StringGroup sg = new StringGroup(ResourcesFiles, ",");

            string[] fileArray = sg.ToStringGroup();

            //计量数据数字的变量
            //char以1000为基数写入
            ArrayList fileCountList = new ArrayList();

            //======================先读文件头,判断
            string fileHead = new string(br.ReadChars(4));

            if (fileHead != "BRSP")
            {
                //不合格,不行,退出
                br.Dispose();
                intoFile.Dispose();
                return(false);
            }
            if (br.ReadInt64() != fileVersion)
            {
                //不合格,不行,退出
                br.Dispose();
                intoFile.Dispose();
                return(false);
            }

            //============确认无误后可以写入===============
            SetFolder(outFileFolder);

            //读入区块
            for (int a = 0; a < fileArray.Length; a++)
            {
                fileCountList.Add(br.ReadInt64());
            }

            //读数据
            for (int a = 0; a < fileArray.Length; a++)
            {
                //如果没有可以读的,取消之
                if ((Int64)fileCountList[a] == 0)
                {
                    continue;
                }

                //打开文件
                outFile = new FileStream(outFileFolder + fileArray[a], FileMode.Create, FileAccess.Write, FileShare.Write);
                bw      = new BinaryWriter(outFile, System.Text.Encoding.UTF8);

                //=================================计算读取次数
                //需要的for循环次数
                int forCount = (int)((Int64)fileCountList[a] / 1000);
                //余下的多余的次数
                int lostCount = (int)((Int64)fileCountList[a] % 1000);

                //====================================读取循环
                //没有达到1000,直接在余下处理里处理
                if (forCount > 0)
                {
                    for (int b = 0; b < forCount; b++)
                    {
                        bw.Write(br.ReadChars(1000));
                    }
                }

                //其余读取
                //是否需要读取
                if (lostCount == 0)   //不需要
                {
                }
                else
                {
                    //需要
                    bw.Write(br.ReadChars(lostCount));
                }

                //===================善后处理
                bw.Dispose();
                outFile.Dispose();
            }

            //善后处理
            br.Dispose();
            intoFile.Dispose();

            return(true);
        }