Samson Kcn Ответов: 4

Как переместить папку из одного каталога в другой без удаления исходной папки в C#


У меня есть несколько папок в "F:\Source"
и я хочу перенести его в ...F:\Destination"
После перемещения файлов я хочу, чтобы исходная папка находилась в том же каталоге

Что я уже пробовал:

System.IO.Directory.Move(@"F:\Source\", @"F:\Destination");


Это то, что я пробовал, но после перемещения файлов я не могу найти исходную папку в каталоге" F:\".

Помогите мне пожалуйста

4 Ответов

Рейтинг:
2

Suvendu Shekhar Giri

Каталог.Двигаться[^] должен это сделать. Он перемещает указанную папку вместе с ее подпапками и файлами в указанное место.
Если вы хотите просто скопировать и не двигаться, вы можете использовать- Системы.ИО.Файл.Копия on loop для каждого файла или может быть файловая система.CopyDirectory[^] может помочь.
Или если вы хотите переместить только содержимое папки, пожалуйста, проверьте следующее, если это поможет-
каталог-перемещение всех файлов в подпапках в другую папку с помощью c# - Stack Overflow[^]

Спасибо :)


Рейтинг:
2

Khaja Moiz

string sourceDir = @"D:\Folder0";
        string destinationDir = @"D:\Folder1";

        try
        {
            // Ensure the source directory exists
            if (Directory.Exists(sourceDir) == true )
            {
                // Ensure the destination directory doesn't already exist
                if (Directory.Exists(destinationDir) == false)
                {
                    // Perform the move
                    Directory.Move(sourceDir, destinationDir);
                }
                else
                {
                    // Could provide the user the option to delete the existing directory
                    // before moving the source directory
                }
            }
            else
            {
                // Do something about the source directory not existing
            }
        }
        catch (Exception)
        {
            // TODO: Handle the exception that has been thrown
        }


Рейтинг:
1

F-ES Sitecore

Я погуглил "copy directory c#" и нашел это примерно за 10 секунд

Как скопировать каталоги | Microsoft Docs[^]


Рейтинг:
0

RickZeeland

Вот некоторые процедуры, которые я попробовал и проверил:

/// <summary>
        /// Recursively copy directory (XCOPY style), except file to skip.
        /// Existing files will be overwritten.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <param name="target">The target.</param>
        /// <param name="skipFileName">File to skip.</param>
        public static void CopyAll(string source, string target, string skipFileName)
        {
            var sourceDi = new DirectoryInfo(source);
            var targetDi = new DirectoryInfo(target);
            CopyAll(sourceDi, targetDi, skipFileName);
        }

        /// <summary>
        /// Recursively copy directory (XCOPY style), except file to skip.
        /// Existing files will be overwritten.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <param name="target">The target.</param>
        /// <param name="skipFileName">File to skip.</param>
        public static void CopyAll(DirectoryInfo source, DirectoryInfo target, string skipFileName)
        {
            // Check if the target directory exists, if not, create it.
            if (Directory.Exists(target.FullName) == false)
            {
                Directory.CreateDirectory(target.FullName);
            }

            // Copy each file into it’s new directory, except files to skip.
            foreach (var fileInfo in source.GetFiles())
            {
                if (fileInfo.Name != skipFileName)
                {
                    Debug.Print(@"Copying {0}\{1}", target.FullName, fileInfo.Name);
                    fileInfo.CopyTo(Path.Combine(target.ToString(), fileInfo.Name), true);
                }
            }

            // Copy each subdirectory using recursion.
            foreach (var subDir in source.GetDirectories())
            {
                if (subDir.Name != target.Name)
                {
                    var nextTargetSubDir = target.CreateSubdirectory(subDir.Name);
                    CopyAll(subDir, nextTargetSubDir, skipFileName);
                }
            }
        }