У меня есть папка с 10 текстовыми файлами на диске C: \ TEXTFILES \ на моей машине. Я хочу полностью скопировать папку TEXTFILES и ее содержимое с моей машины на другую машину. Как скопировать то же самое с помощью C#.Копирование папки в C#
ответ
using System;
using System.IO;
class DirectoryCopyExample
{
static void Main()
{
DirectoryCopy(".", @".\temp", true);
}
private static void DirectoryCopy(
string sourceDirName, string destDirName, bool copySubDirs)
{
DirectoryInfo dir = new DirectoryInfo(sourceDirName);
DirectoryInfo[] dirs = dir.GetDirectories();
// If the source directory does not exist, throw an exception.
if (!dir.Exists)
{
throw new DirectoryNotFoundException(
"Source directory does not exist or could not be found: "
+ sourceDirName);
}
// If the destination directory does not exist, create it.
if (!Directory.Exists(destDirName))
{
Directory.CreateDirectory(destDirName);
}
// Get the file contents of the directory to copy.
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
// Create the path to the new copy of the file.
string temppath = Path.Combine(destDirName, file.Name);
// Copy the file.
file.CopyTo(temppath, false);
}
// If copySubDirs is true, copy the subdirectories.
if (copySubDirs)
{
foreach (DirectoryInfo subdir in dirs)
{
// Create the subdirectory.
string temppath = Path.Combine(destDirName, subdir.Name);
// Copy the subdirectories.
DirectoryCopy(subdir.FullName, temppath, copySubDirs);
}
}
}
}
От MSDN
Это выглядит прекрасно, если подключены как источник, так и пункт назначения. Но приведенный выше код генерирует исключение, если машина назначения не подключена или может потребоваться подключение учетных данных пользователя. Затем в этом типе сценариев код выше не работает. Есть ли способ преодолеть этот тип исключений, возникающих при передаче файлов с машины на машину. – venkat
Что вы ожидаете от результата, если конечный компьютер не подключен или ожидает, что учетные данные завершат операцию? Я бы подумал, что исключение будет подходящим поведением, если машина назначения недоступна, поскольку я не могу придумать, каким образом заставить пункт назначения быть в сети. Если требуются учетные данные, возможно, появится диалоговое окно для запроса учетных данных. –
Решение не работает, если имеется 2 уровня иерархии папок. Он просто копирует его в базовую папку. – whihathac
Вы найдете все, что вам нужно, в пространстве имен System.IO
, а именно классы File
и Directory
.
-1 не полезно. – toddmo
- Доля папка назначения.
- Существует много способов сделать это. См следующее:
Copy Folders in C# using System.IO
Copy the entire contents of a directory in C#
string path = @"C:\TEXTFILES\";
string path2 = @"P:\myNetworkPath\tesssst";
try
{
Directory.CreateDirectory(path2);
foreach (string fileName in Directory.GetFiles(path))
{
File.Copy(
Path.Combine(path, fileName),
Path.Combine(path2, fileName), true);
}
}
catch
{
Console.WriteLine("Exception");
}
Для более глубокого копирования, см:
http://www.codeproject.com/KB/files/copydirectoriesrecursive.aspx
private void copyDirectory(string strSource, string strDestination)
{
if (!Directory.Exists(strDestination))
{
Directory.CreateDirectory(strDestination);
}
DirectoryInfo dirInfo = new DirectoryInfo(strSource);
FileInfo[] files = dirInfo.GetFiles();
foreach(FileInfo tempfile in files)
{
tempfile.CopyTo(Path.Combine(strDestination,tempfile.Name));
}
DirectoryInfo[] directories = dirInfo.GetDirectories();
foreach(DirectoryInfo tempdir in directories)
{
copyDirectory(Path.Combine(strSource, tempdir.Name), Path.Combine(strDestination, tempdir.Name));
}
}
- 1. Копирование папки в C# с использованием System.IO
- 2. Копирование папки в dist/
- 3. Копирование папки в командной строке
- 4. Delphi, копирование папки в iOS
- 5. Копирование папки внутри ведра AmazonS3 (C#)
- 6. Как определить, закончилось ли копирование папки C#
- 7. папки Копирование без перезаписи
- 8. Копирование папки на WinRT
- 9. Создание папки и копирование файла
- 10. Powershell Копирование файлов и папки
- 11. Копирование папки в несколько папок
- 12. Копирование папки в скрипте inno
- 13. Копирование папки в проводнике Windows
- 14. Копирование папки по сети
- 15. Копирование папки базы данных MYSQL
- 16. Копирование папки и ее содержимого в vb.net
- 17. Копирование папки с сервера в локальный каталог
- 18. Копирование файлов из папки в другую с C#
- 19. C# копирование файлов из исходной папки в целевую папку
- 20. C# Копирование файлов из текущей папки в специальной Forder
- 21. Пакетное копирование во все папки
- 22. Резервное копирование полного резерва (папки)
- 23. копирование локальной папки в hdfs через R
- 24. Организация и копирование файлов в новые папки
- 25. Резервное копирование папки документов в iCloud
- 26. Копирование/вставка и создание папки в android
- 27. Копирование только файлов внутри папки в Глотке
- 28. iphone копирование папки из пакета в документы
- 29. Копирование папки из плагинаBasedir в целевой проект
- 30. Копирование неподписанной папки в другую ветку
Пожалуйста, помогите мне с какой-то пример кода. Поскольку мне нужно скопировать папку с одного сервера на другой сервер – venkat
@sukmar, нет возможности скопировать каталог с использованием одной функции .NET, это из-за безопасности. Вам нужно будет написать свою собственную функцию. См. Мой ответ для деталей. – serhio
.NET может дать нам этот метод «высокого уровня» в рамках. – Seva