如何將目錄複製到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. 將最新的目錄複製到網絡驅動器
- 4. 將文件從Samba驅動器複製到Android sdcard目錄
- 5. Excel宏將圖像從網絡驅動器複製到其他文件夾
- 6. Visual Studio將項目複製到外部驅動器
- 7. 使用ANT將文件從本地目錄複製到映射驅動器
- 8. 如何遞歸複製SDcard目錄和子目錄到其他smb目錄(samba)?
- 9. 將gradle臨時緩存目錄移動到其他目錄
- 10. 如何複製目錄結構而不實際將內容複製到其他目錄
- 11. 從網絡服務器複製目錄到映射的網絡驅動器
- 12. 如何將驅動器中的所有照片複製到閃存驅動器
- 13. 使用C#將文件從本地驅動器複製到共享驅動器
- 14. 將htm及其支持的文件和目錄複製到使用CMD的其他目錄
- 15. 在FTP中,如何將遠程文件複製到其他目錄
- 16. 完成構建後將構建版本複製到其他目錄
- 17. 將筆記項目(mime部分)複製到其他文檔
- 18. 將佈局複製到其他項目(C#)
- 19. 複製到所有其他
- 20. 使用PowerShell將文件複製到共享驅動器
- 21. 將網絡文件複製到驅動器
- 22. 將網絡文件複製到本地驅動器
- 23. ASP.NET - 將文件複製到映射的網絡驅動器
- 24. 將文件複製到一個目錄中,並附上其原始主目錄
- 25. 自動將新文件複製到其他文件夾(CentOS 6.3)?
- 26. AWS - 自動將快照複製到其他區域
- 27. 讀取圖像並將其複製到預定義的目錄
- 28. 如何通過java服務將文件從一個目錄複製到azure中的其他目錄?
- 29. 將plist複製到文檔目錄
- 30. CakePHP將文件複製到新目錄
笑,什麼?對不起,沒有取笑任何人只是認爲這個問題是這樣的問題很熱鬧:) – VoodooChild 2010-06-01 04:43:00
我明白這個問題已經回答,但你應該嘗試和提高質量的問題。它寫得不是很好。 – 2010-06-01 04:46:17
我想我們需要一個新的理由來關閉 - '很容易找到如果OP做出努力' – Gishu 2010-06-01 04:59:14