Пример #1
0
        /// <summary>
        /// 尝试重命名文件或文件夹,如果成功,则返回更新后的路径;如果失败,则返回更新前的路径
        /// </summary>
        public static XCLNetTools.Entity.MethodResult <string> TryRename(bool isFolder, string path, string newName)
        {
            var msg = new XCLNetTools.Entity.MethodResult <string>();

            msg.IsSuccess = false;
            msg.Result    = path;
            if (string.IsNullOrWhiteSpace(path))
            {
                return(msg);
            }
            try
            {
                if (isFolder)
                {
                    //注意:即使名称没有变化(不区分大小写) ,也会报错
                    PC.FileSystem.RenameDirectory(path, newName);
                    msg.Result = XCLNetTools.FileHandler.ComFile.ChangePathByFolderName(path, newName, true);
                }
                else
                {
                    //注意:即使名称没有变化(不区分大小写) ,也会报错
                    PC.FileSystem.RenameFile(path, newName);
                    msg.Result = XCLNetTools.FileHandler.ComFile.ChangePathByFileName(path, newName);
                }
                msg.IsSuccess = true;
            }
            catch (Exception ex)
            {
                msg.Result  = path;
                msg.Message = ex.Message;
            }
            return(msg);
        }
Пример #2
0
        /// <summary>
        /// 重命名文件或文件夹(先按正常逻辑重命名,如果失败,则使用随机前缀重命名并返回该随机前缀和路径,方便后续移除此前缀,注意:此方法不包含移除随机前缀的逻辑,由前端逻辑处理)
        /// </summary>
        /// <param name="isFolder">是否为文件夹</param>
        /// <param name="path">路径</param>
        /// <param name="newName">此文件或文件夹的新名称</param>
        /// <param name="fileId">关联的数据库记录标识</param>
        public static XCLNetTools.Entity.MethodResult <RenameConflictItem> RenameFileOrFolder(bool isFolder, string path, string newName, int fileId)
        {
            var msg = new XCLNetTools.Entity.MethodResult <RenameConflictItem>();

            msg.Result    = null;
            msg.IsSuccess = true;
            if (string.IsNullOrWhiteSpace(path))
            {
                return(msg);
            }

            try
            {
                //正常重命名
                if (isFolder)
                {
                    //注意:即使名称没有变化(不区分大小写) ,也会报错
                    PC.FileSystem.RenameDirectory(path, newName);
                }
                else
                {
                    //注意:即使名称没有变化(不区分大小写) ,也会报错
                    PC.FileSystem.RenameFile(path, newName);
                }
            }
            catch (Exception ex)
            {
                //如果正常重命名报错,则采用随机前缀再次重命名,如:[email protected]
                var tempName = System.IO.Path.GetRandomFileName().Replace("@", "") + splitChar + newName;
                var tempPath = isFolder ? XCLNetTools.FileHandler.ComFile.ChangePathByFolderName(path, tempName, true) : XCLNetTools.FileHandler.ComFile.ChangePathByFileName(path, tempName);
                try
                {
                    msg.Result            = new RenameConflictItem();
                    msg.Result.FileID     = fileId;
                    msg.Result.RandomName = tempName;
                    msg.Result.Path       = tempPath;
                    msg.Result.RealName   = newName;
                    if (isFolder)
                    {
                        PC.FileSystem.RenameDirectory(path, tempName);
                        msg.Result.RealPath = XCLNetTools.FileHandler.ComFile.ChangePathByFolderName(path, newName, true);
                    }
                    else
                    {
                        PC.FileSystem.RenameFile(path, tempName);
                        msg.Result.RealPath = XCLNetTools.FileHandler.ComFile.ChangePathByFileName(path, newName);
                    }
                }
                catch
                {
                    //抛出最开始的异常信息
                    throw ex;
                }
            }
            return(msg);
        }