我正在尝试将整个目录树从服务器的共享文件夹复制到我的本地计算机,我发现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'.
非常感谢!
答案 0 :(得分:3)
逃离字符串怎么样?
CopyFilesRecursively(
new DirectoryInfo(@"\\192.168.0.11\Share"),
new DirectoryInfo(@"D:\Projects\"));
答案 1 :(得分:1)
另外,试试:
DirectoryInfo di=new DirectoryInfo(@"\\<server>\<share>");
特定点是@符号;这适用于我的本地网络。
答案 2 :(得分:0)
你可以将文件夹的unc路径传递给函数吗? \\servername\physical path to folder
?
答案 3 :(得分:0)
如果它不支持UNC路径,您可以将网络共享映射到驱动器号。如果您需要为用户指定的共享执行此操作,则不是非常便携;但是如果你只需要专注于一个共享就行了。
XP上的:我的电脑 - &gt;工具 - &gt;映射网络驱动器