如何将目录复制到C#中的其他驱动器?将目录复制到其他驱动器
回答
您可以使用此代码来执行您的操作:
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
// 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.
foreach (FileInfo fi in source.GetFiles())
{
Console.WriteLine(@”Copying {0}\{1}”, target.FullName, fi.Name);
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
}
// Copy each subdirectory using recursion.
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
{
DirectoryInfo nextTargetSubDir =
target.CreateSubdirectory(diSourceSubDir.Name);
CopyAll(diSourceSubDir, nextTargetSubDir);
}
}
下面一个还不错:
static public void CopyFolder(string sourceFolder, string destFolder)
{
if (!Directory.Exists(destFolder))
Directory.CreateDirectory(destFolder);
string[] files = Directory.GetFiles(sourceFolder);
foreach (string file in files)
{
string name = Path.GetFileName(file);
string dest = Path.Combine(destFolder, name);
File.Copy(file, dest);
}
string[] folders = Directory.GetDirectories(sourceFolder);
foreach (string folder in folders)
{
string name = Path.GetFileName(folder);
string dest = Path.Combine(destFolder, name);
CopyFolder(folder, dest);
}
}
您可以使用此功能也:
FileSystem.CopyDirectory(sourceDir, destDir);
FileSystem.CopyDirectory(sourceDir, destDir);
FileSystem.CopyDirectory
是在VB命名空间和程序集中,但可能并不重要。
如何:复制,删除,移动文件和文件夹(C#编程指南)
http://msdn.microsoft.com/en-us/library/cc148994.aspx
C#复制文件夹递归
http://www.csharp411.com/c-copy-folder-recursively/
这并不显示如何执行递归复制。 – 2010-06-01 04:48:48
@Matthew:固定。 – 2010-06-01 14:41:19
private String path;
public int copyAllContents(String destinationFolder, ProgressBar progressBar)
{
int countCopyFiles = 0;
if (!Directory.Exists(destinationFolder))
{ Directory.CreateDirectory(destinationFolder); }
String[] allFilesForCurrentFolder = Directory.GetFiles(path, "*.*", SearchOption.TopDirectoryOnly);
String[] subFoldersAllpath = Directory.GetDirectories(path);
for (int i = 0; i < allFilesForCurrentFolder.Length; i++)
{
try { File.Copy(allFilesForCurrentFolder[i], destinationFolder + "\\" + Path.GetFileName(allFilesForCurrentFolder[i])); countCopyFiles++; progressBar.Value++; }
catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); }
}
if (subFoldersAllpath.Length == 0)
{ return allFilesForCurrentFolder.Length; };
for (int i = 0; i < subFoldersAllpath.Length; i++)
{
this.path = subFoldersAllpath[i];
String[] subFoldersAllpathLastFolder = subFoldersAllpath[i].Split('\\');
countCopyFiles += this.copyAllContents(destinationFolder + "\\" + subFoldersAllpathLastFolder[subFoldersAllpathLastFolder.Length - 1], progressBar);
}
return countCopyFiles;
}
如果您正确格式化代码,其他人阅读您的答案会容易得多。另外,最好在代码中添加一些上下文。写下你为什么认为这是一个很好的答案或者与其他答案不同的原因。 – mdewitt 2014-02-08 00:27:12
这里,将工作在.NET 4.0 +
var source = new DirectoryInfo(@"C:\Test");
var destination = new DirectoryInfo(@"E:\Test");
source.CopyTo(destination);
包括扩展此文件在您的项目中
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace System.IO
{
public static class DirectoryInfoExtensions
{
public static void CopyTo(this DirectoryInfo source, DirectoryInfo target)
{
if (!target.Exists)
target.Create();
foreach (var file in source.GetFiles())
file.CopyTo(Path.Combine(target.FullName, file.Name), true);
foreach (var subdir in source.GetDirectories())
subdir.CopyTo(target.CreateSubdirectory(subdir.Name));
}
}
}
这里有一个方法是拷贝目录递归为async
功能:
public static async Task CopyDirectoryAsync(string sourceDirectory, string destinationDirectory)
{
if (!Directory.Exists(destinationDirectory))
Directory.CreateDirectory(destinationDirectory);
foreach (var file in Directory.GetFiles(sourceDirectory))
{
var name = Path.GetFileName(file);
var dest = Path.Combine(destinationDirectory, name);
await CopyFileAsync(file, dest);
}
foreach (var subdir in Directory.GetDirectories(sourceDirectory))
{
var name = Path.GetFileName(subdir);
var dest = Path.Combine(destinationDirectory, name);
await CopyDirectoryAsync(subdir, dest);
}
}
public static async Task CopyFileAsync(string sourceFile, string destinationFile)
{
using (var sourceStream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.Asynchronous | FileOptions.SequentialScan))
using (var destinationStream = new FileStream(destinationFile, FileMode.CreateNew, FileAccess.Write, FileShare.None, 4096, FileOptions.Asynchronous | FileOptions.SequentialScan))
await sourceStream.CopyToAsync(destinationStream);
}
- 1. 将文件复制到其他目录
- 2. 将文件复制到其他目录
- 3. 将文件从Samba驱动器复制到Android sdcard目录
- 4. 将目录从SharePoint站点复制到本地驱动器
- 5. 将最新的目录复制到网络驱动器
- 6. 复制图像并将其保存到其他目录
- 7. Excel宏将图像从网络驱动器复制到其他文件夹
- 8. 将骨骼动画复制到其他?
- 9. 将DLL复制到构建的其他目录中ASP.NET
- 10. Bash脚本:复制目录到外部驱动器 - 如何导航目录?
- 11. Visual Studio将项目复制到外部驱动器
- 12. 使用ANT将文件从本地目录复制到映射驱动器
- 13. 如何递归复制SDcard目录和子目录到其他smb目录(samba)?
- 14. 将gradle临时缓存目录移动到其他目录
- 15. 如何复制目录结构而不实际将内容复制到其他目录
- 16. 从网络服务器复制目录到映射的网络驱动器
- 17. .BAT复制文件 - 相同的目录不同的驱动器
- 18. 使用C#将文件从本地驱动器复制到共享驱动器
- 19. 运行robocopy蝙蝠将整个驱动器复制到另一个驱动器
- 20. 如何将驱动器中的所有照片复制到闪存驱动器
- 21. 递归查找并复制到其他目录
- 22. 将htm及其支持的文件和目录复制到使用CMD的其他目录
- 23. 如何将lightroom目录移动到新驱动器
- 24. 将数据复制到其他ul
- 25. 保存时自动将文件复制到网络驱动器
- 26. 无法在C驱动器下创建新目录并复制到它
- 27. 将具有特定大小的文件复制到其他目录
- 28. 以编程方式将文件从'Temporary Internet Files'复制到其他目录
- 29. 完成构建后将构建版本复制到其他目录
笑,什么?对不起,没有取笑任何人只是认为这个问题是这样的问题很热闹:) – VoodooChild 2010-06-01 04:43:00
我明白这个问题已经回答,但你应该尝试和提高质量的问题。它写得不是很好。 – 2010-06-01 04:46:17
我想我们需要一个新的理由来关闭 - '很容易找到如果OP做出努力' – Gishu 2010-06-01 04:59:14