コード例 #1
0
ファイル: FileService.cs プロジェクト: iamoatil/S_P_F_P_r-o
        /// <summary>
        /// APP应用列表导出
        /// </summary>
        /// <param name="matchPath"></param>
        /// <param name="isCover"></param>
        public void ExportAppFile(IEnumerable <string> matchPath, string path, bool isCover = false)
        {
            var files = GetUserPartitionFiles;

            if (_systemTree == null)
            {
                return;
            }
            IAsync?.Advance(1, LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.FileServiceLanguage_File_KaiShiHuiFuYingYongWenJianLieB));

            string pattern = "com.tencen(.+).mm";
            Regex  regex   = new Regex(pattern, RegexOptions.IgnoreCase);

            foreach (var mPath in matchPath)
            {
                var source = new List <FNodeX>();
                if (regex.IsMatch(mPath))
                {
                    source = files.FindAll(o => regex.IsMatch(o.FullPath) && !o.IsDelete);//匹配(第三方)微信
                }
                else
                {
                    source = files.FindAll(o => o.FullPath.StartsWith(mPath, StringComparison.OrdinalIgnoreCase) && !o.IsDelete);
                }
                foreach (var f in source)
                {
                    fileServiceX.ExportFileX(f, path);
                }
            }
        }
コード例 #2
0
        private int CopyUserDataCallback(string uniqueDeviceID, byte step, float status, ref UInt32 isStopCopy)
        {
            if (IsStop)
            {//停止文件拷贝
                isStopCopy = 1;
            }
            else
            {
                isStopCopy = 0;
            }

            string msg            = string.Empty;
            double actualProgress = 0;

            switch (step)
            {
            case 1:    // 拷贝前初始化 status为进度 0-100
                msg = string.Format(LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSInitProgress), status);
                double reportAProgress = status / 100.0 - _OneStepLastProgress;
                _OneStepLastProgress = status / 100.0;
                actualProgress       = reportAProgress * _OneAllProgress;

                break;

            case 2:    // 数据拷贝 status为已经拷贝数据大小,单位为Byte
                msg = string.Format(LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSCopyProgress), (status / 1024.0).ToString("F2"));
                double singleProgress = _TwoAllProgress / 20.0;
                if (_TwoCumulativeProgress + singleProgress > _TwoAllProgress)
                {
                    singleProgress = _TwoAllProgress - _TwoCumulativeProgress;
                }
                _TwoCumulativeProgress += singleProgress;
                actualProgress          = singleProgress;

                break;

            case 3:    // 拷贝结束,进行后期合并
                if (_TwoCumulativeProgress < _TwoAllProgress)
                {
                    Asyn.Advance(_TwoAllProgress - _TwoCumulativeProgress, LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSCopyDataOver));
                    _TwoCumulativeProgress = _TwoAllProgress;
                }

                double reportBProgress = status - _ThreeSetpLastProgress;
                _ThreeSetpLastProgress    = status;
                _ThreeCumulativeProgress += reportBProgress * _ThreeAllProgress;
                actualProgress            = reportBProgress * _ThreeAllProgress;

                if (1 == status)
                {
                    IsCopying = false;
                    if (_ThreeCumulativeProgress < _ThreeAllProgress)
                    {
                        actualProgress = _ThreeAllProgress - _ThreeCumulativeProgress;
                    }
                    msg = LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSExtractLocalOver);
                }
                else
                {
                    msg = string.Format(LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSLastStepProgress), (status * 300).ToString("F2"));
                }

                break;

            default:    // 拷贝失败或者用户终止
                msg            = step == 4 ? LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSCopyError) : LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSUserExit);
                Asyn.IsSuccess = false;
                IsCopying      = false;
                actualProgress = 0;

                LoggerManagerSingle.Instance.Warn(string.Format(LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSDeviceCopyError), uniqueDeviceID, step, msg));

                break;
            }

            Asyn.Advance(actualProgress, string.Format(LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.DeviceLanguage_IOSExtractLocalAppsReport), CurrentDeviceName, msg));

            //返回0则继续拷贝
            return(0);
        }