Ejemplo n.º 1
0
        private void FolderTransferRecursively(string inputFolder, string outputFolder)
        {
            if (!Directory.Exists(outputFolder))
            {
                Directory.CreateDirectory(outputFolder);
            }
            var inputList = GetItems(inputFolder);

            Parallel.ForEach(inputList, new ParallelOptions {
                MaxDegreeOfParallelism = MaxParallel
            }, inputItemPath =>
            {
                string inputItemName  = inputItemPath.Split('\\').Last();
                string outputItemName = ItemRename(inputItemName);
                string outputItemPath = Path.Combine(outputFolder, outputItemName);
                try
                {
                    ItemTransfer(inputItemPath, outputItemPath);
                }
                catch (Exception e)
                {
                    Logger.WriteLineWithLock(e.Message, true, true);
                }
            });

            foreach (string inputSubFolder in Directory.EnumerateDirectories(inputFolder))
            {
                string subFolderName       = inputSubFolder.Split('\\').Last();
                string outputSubFolderPath = Path.Combine(outputFolder, subFolderName);
                FolderTransferRecursively(inputSubFolder, outputSubFolderPath);
            }
        }