使用 c# 在网络中移动目录

Posted

技术标签:

【中文标题】使用 c# 在网络中移动目录【英文标题】:Move a directory across a network using c# 【发布时间】:2012-06-20 10:32:19 【问题描述】:

我有一个文件夹 A,我想将它从我的计算机移动到网络上的服务器。

我尝试过Directory.Move(A,Server),但因为它们没有相同的根,所以它不起作用。

File.Copy(A,Server) 将不起作用,因为该文件夹是只读的并且无法更改权限。

提前致谢。

编辑 包含代码

string copyFrom = @"folder";
string copyTo = @"\\server\Libraries\Documents";
string destinationPath = Path.Combine(copyTo, Path.GetFileName(copyFrom));
File.Copy(copyFrom, destinationPath);

这是我目前使用的代码。

编辑 2

我的电脑和服务器在不同的域。

【问题讨论】:

你的意思是服务器路径是只读的。如果是的话,你怎么能想到使用 File.Copy 或 Directory.Move。你必须使文件夹可写 否 我要移动/复制的文件夹是只读的。否则,File.Copy 会起作用 为什么不直接使用XCOPY? robocopy 可以很好地解决网络问题 【参考方案1】:

正如@Tigran 建议的那样,您可以将 cmd 与 xcopy 一起使用(如果您愿意,也可以使用 robocopy)。

试试这个:

ProcessStartInfo Info = new ProcessStartInfo(); 
Info.Arguments = "/C xcopy C:\A \\server\A /I /E /Y"; 
Info.WindowStyle = ProcessWindowStyle.Hidden; 
Info.CreateNoWindow = true; 
Info.FileName = "cmd.exe"; 
Process.Start(Info);

【讨论】:

有没有一种简单的方法可以登录服务器?? @ELSheepO 我不明白你的意思? Logon failure: unknown user name or bad password. 运行代码时出现此异常。 抱歉,我的意思是从 cmd 运行 xcopy 命令,它可能会让您更好地了解哪里出错了。 VS 错误将与 cmd 报告的不同。 当我使用服务器的ip和服务器名称\\server\c:\folder_test时,它给了我一个invalid drive specification

以上是关于使用 c# 在网络中移动目录的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中移动文件

将 Azure 存储中的文件移动到共享网络目录

如何在 C# 桌面应用程序和移动(android)设备之间通过本地网络进行通信? [关闭]

将 dll 的配置文件移动到调用 dll 的应用程序

.NET(c#) 移动APP开发平台 - Smobiler - 平台介绍

如何在 DataGridView c# 中移动光标