CubePdf.Converter.EscapeIf C# (CSharp) Method

EscapeIf() private method

結合オプションなどの関係で既に存在する同名ファイルを退避させます。
リネームの場合は、退避させる代わりに UserSetting.OutputPath プロパティの値を変更します。
private EscapeIf ( UserSetting setting ) : void
setting UserSetting
return void
        private void EscapeIf(UserSetting setting)
        {
            if (!FileExists(setting)) return;

            var is_merge = setting.ExistedFile == Parameter.ExistedFiles.MergeTail ||
                           setting.ExistedFile == Parameter.ExistedFiles.MergeHead;

            if (setting.ExistedFile == Parameter.ExistedFiles.Rename)
            {
                var directory = IoEx.Path.GetDirectoryName(setting.OutputPath);
                var basename  = IoEx.Path.GetFileNameWithoutExtension(setting.OutputPath);
                var extension = IoEx.Path.GetExtension(setting.OutputPath);

                for (var i = 2; i < 10000; ++i)
                {
                    var old = IoEx.Path.GetFileName(setting.OutputPath);
                    var filename = string.Format("{0}({1}){2}", basename, i, extension);
                    setting.OutputPath = IoEx.Path.Combine(directory, filename);
                    AddMessage(string.Format("Rename: {0} -> {1}", old, filename));
                    if (!FileExists(setting)) break;
                }
            }
            else if (setting.FileType == Parameter.FileTypes.PDF && is_merge)
            {
                _escaped = IoEx.Path.Combine(Path.WorkingDirectory, IoEx.Path.GetRandomFileName());
                IoEx.File.Copy(setting.OutputPath, _escaped, true);
                AddMessage(string.Format("Escape: {0} -> {1}", setting.OutputPath, _escaped));
            }
        }