2009-08-12 80 views
4

我想從服務器的共享文件夾複製整個目錄樹到我的本地機器,我發現Best way to copy the entire contents of a directory in C#後,並決定使用,但據我猜DirectoryInfo不支持網絡共享,我怎麼能更改此代碼以使用網絡共享作爲源?從網絡複製整個共享目錄

public static void CopyFilesRecursively(DirectoryInfo source, DirectoryInfo target) { 
    foreach (DirectoryInfo dir in source.GetDirectories()) 
     CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name)); 
    foreach (FileInfo file in source.GetFiles()) 
     file.CopyTo(Path.Combine(target.FullName, file.Name)); 
} 

編輯
和呼叫

CopyFilesRecursively(new DirectoryInfo ("\\192.168.0.11\Share"), new DirectoryInfo ("D:\Projects\")); 

並獲得錯誤信息

Could not find a part of the path 'D:\192.168.0.11\Share'. 

非常感謝!

回答

3

如何逃避字符串?

CopyFilesRecursively(
    new DirectoryInfo(@"\\192.168.0.11\Share"), 
    new DirectoryInfo(@"D:\Projects\")); 

MSDN說DirectoryInfo can handle UNC paths

+0

謝謝你的分享!這個爲我工作! – 2018-03-08 09:11:21

0

你可以傳入函數unc路徑的文件夾嗎? \\servername\physical path to folder

0

如果它不支持UNC路徑,則可以將網絡共享映射到驅動器號。如果您需要爲用戶指定的份額執行此操作,則不是非常便於攜帶;但如果你只需要專注於一個分享的話就可以工作。

在XP:我的電腦 - >工具 - >映射網絡驅動器

1

另外,嘗試:

DirectoryInfo di=new DirectoryInfo(@"\\<server>\<share>"); 

具體點是@符號;這適用於我的本地網絡。