【问题标题】:Copy file between two UNC paths C# Windows.Forms problems在两个 UNC 路径之间复制文件 C# Windows.Forms 问题
【发布时间】:2014-04-25 20:16:17
【问题描述】:

我正在尝试在我拥有完全访问权限的两个 UNC 路径之间复制文件。每个 UNC 的根是不同的物理驱动器。我可以使用文件资源管理器毫无问题地复制文件。

string file1 = @"\\node\disk1\dir\file.jpg";
string file2 = @"\\node\disk2\dir\file.jpg";
File.Copy(file1,file2);

以上失败,DirectoryNotFoundException

但是 - 这工作正常,但速度太慢而无法使用,并表明这不是权限问题。

Image img = Image.FromFile(file1);
img.Save(file2);

如果文件位于同一物理设备 \node\disk1 上,则 File.Copy 工作正常。

【问题讨论】:

  • 第二种解决方案也会导致图像质量下降,因为图像将在保存时重新编码。
  • 你试过在Copy之前使用Directory.CreateDirectory(Path.GetDirectoryName(file2))吗?
  • \\\ 那个\ 是不是太多了?您已经在字符串之前有一个@,因此您不需要进行额外的转义。 (arg,谈到转义我如何正确格式化我的评论以在代码标签中显示 \ 和 @?:D)
  • 这是一个\太多,但预览中的文本格式不正确,所以我为这篇文章转义了它。我会再次删除它!
  • 如果我在目标上执行 Directory.CreateDirectory,则 DirectoryInfo.Exists 返回 true。但是我仍然得到例外。找不到路径“\\node\disk2\dir\file.jpg”的一部分

标签: c# unc


【解决方案1】:

我的猜测是出现问题是因为您在第二个参数中指定了文件名file.jpg。它将整个事物视为一个目录。

试试这个并检查一下

string file1 = @"\\node\disk1\dir\file.jpg";
string file2 = @"\\node\disk2\dir\"; // Do not specify the file name
File.Copy(file1,file2);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-05-14
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多