コード例 #1
0
        public FileExplorerMoveResult Rename(string path, string newPath)
        {
            var srcRealPath = GetRealPath(path);
            var srcWebPath  = GetWebPath(srcRealPath);
            var srcDlPath   = GetDownloadPath(srcRealPath);
            var srcName     = GetItemName(srcWebPath);
            var tgtRealPath = GetRealPath(newPath);
            var tgtWebPath  = GetWebPath(tgtRealPath);
            var tgtDlPath   = GetDownloadPath(tgtRealPath);
            var tgtName     = GetItemName(tgtWebPath);

            if (Directory.Exists(srcRealPath))
            {
                var bef = new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, true, null);
                if (!Directory.Exists(tgtRealPath))
                {
                    var tgtDirContainer = Path.GetDirectoryName(tgtRealPath);
                    if (tgtDirContainer != null && !Directory.Exists(tgtDirContainer))
                    {
                        Directory.CreateDirectory(tgtDirContainer);
                    }
                    Directory.Move(srcRealPath, tgtRealPath);
                    var aft    = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, true, null);
                    var result = new FileExplorerMoveResult(bef, aft);
                    return(result);
                }
                else
                {
                    var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, true, new[] {
                        $"ProtoCMS: directory '{tgtWebPath}' already exists."
                    });
                    var result = new FileExplorerMoveResult(bef, aft);
                    return(result);
                }
            }
            if (File.Exists(srcRealPath))
            {
                var bef = new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, false, null);
                if (!File.Exists(tgtRealPath))
                {
                    var tgtFileContainingDir = Path.GetDirectoryName(tgtRealPath);
                    if (tgtFileContainingDir != null && !Directory.Exists(tgtFileContainingDir))
                    {
                        Directory.CreateDirectory(tgtFileContainingDir);
                    }
                    File.Move(srcRealPath, tgtRealPath);
                    var aft    = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, false, null);
                    var result = new FileExplorerMoveResult(bef, aft);
                    return(result);
                }
                else
                {
                    var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, false, new[] {
                        $"ProtoCMS: file '{tgtWebPath}' already exists."
                    });
                    var result = new FileExplorerMoveResult(bef, aft);
                    return(result);
                }
            }
            return(new FileExplorerMoveResult(
                       new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, false, null),
                       new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, false, new[] {
                $"ProtoCMS: file or directory '{srcWebPath}' doesn't exists."
            })
                       ));
        }
コード例 #2
0
        public FileExplorerMoveResult[] CopyToDir(string[] paths, string targetDir)
        {
            var results     = new List <FileExplorerMoveResult>();
            var tgtBasePath = GetRealPath(targetDir);

            foreach (var path in paths)
            {
                var srcRealPath = GetRealPath(path);
                var srcWebPath  = GetWebPath(srcRealPath);
                var srcDlPath   = GetDownloadPath(srcRealPath);
                var srcName     = GetItemName(srcWebPath);
                var tgtRealPath = Path.Combine(tgtBasePath, srcName);
                var tgtWebPath  = GetWebPath(tgtRealPath);
                var tgtDlPath   = GetDownloadPath(tgtRealPath);
                var tgtName     = GetItemName(tgtWebPath);
                if (Directory.Exists(srcRealPath))
                {
                    var bef         = new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, true, null);
                    var dirCopyErrs = new List <string>();
                    if (!Directory.Exists(tgtRealPath))
                    {
                        var allSrcFiles = Directory.EnumerateFiles(srcRealPath, "*.*", SearchOption.AllDirectories)
                                          .ToArray();
                        foreach (var srcFileRealPath in allSrcFiles)
                        {
                            var srcFileWebPath  = GetWebPath(srcFileRealPath);
                            var srcFileName     = GetItemName(srcFileWebPath);
                            var tgtFileRealPath = Path.Combine(tgtRealPath, srcFileName);
                            var tgtFileWebPath  = GetWebPath(tgtFileRealPath);
                            if (!File.Exists(tgtFileRealPath))
                            {
                                var tgtFileContainingDir = Path.GetDirectoryName(tgtFileRealPath);
                                if (tgtFileContainingDir != null && !Directory.Exists(tgtFileContainingDir))
                                {
                                    Directory.CreateDirectory(tgtFileContainingDir);
                                }
                                File.Copy(srcFileRealPath, tgtFileRealPath);
                            }
                            else
                            {
                                dirCopyErrs.Add($"ProtoCMS: file '{tgtFileWebPath}' already exists.");
                            }
                        }
                        var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, true,
                                                                  dirCopyErrs.Count == 0 ? null : dirCopyErrs.ToArray());
                        var result = new FileExplorerMoveResult(bef, aft);
                        results.Add(result);
                    }
                    else
                    {
                        var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, true,
                                                                  new[] {
                            $"ProtoCMS: directory '{tgtWebPath}' already exists."
                        });
                        var result = new FileExplorerMoveResult(bef, aft);
                        results.Add(result);
                    }
                }
                else if (File.Exists(srcRealPath))
                {
                    var bef = new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, false, null);
                    if (!File.Exists(tgtRealPath))
                    {
                        var tgtFileContainingDir = Path.GetDirectoryName(tgtRealPath);
                        if (tgtFileContainingDir != null && !Directory.Exists(tgtFileContainingDir))
                        {
                            Directory.CreateDirectory(tgtFileContainingDir);
                        }
                        else
                        {
                            File.Copy(srcRealPath, tgtRealPath);
                        }
                        var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, false,
                                                                  null);
                        var result = new FileExplorerMoveResult(bef, aft);
                        results.Add(result);
                    }
                    else
                    {
                        var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, false,
                                                                  new[] {
                            $"ProtoCMS: file '{tgtWebPath}' already exists."
                        });
                        var result = new FileExplorerMoveResult(bef, aft);
                        results.Add(result);
                    }
                }
            }
            return(results.ToArray());
        }