2009-08-12 61 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>"); 

具体点是@符号;这适用于我的本地网络。