如何读取和写入Windows“networking位置”

在Windows中,您可以使用“添加networking位置向导”将FTP站点添加为指定的networking位置。 例如,用户可以添加一个名为“MyFtp”的位置。

在.Net中,如何访问(列出,读取和写入)该位置的文件? Windows是否抽象出实现(WebDAV,FTP或其他),并使其看起来像我的.Net程序的本地文件夹? 如果是这样的话,我该如何在File.WriteAllText(path, content)指定path参数? 如果没有,我怎样才能访问这些文件?

Solutions Collecting From Web of "如何读取和写入Windows“networking位置”"

不,Windows只能在资源管理器中处理。 (他们可能已经在新版本的Windows中删除了这个)。你将不得不使用一些内置的类或者自己实现FTP,WebDav和其他协议。

网络位置中的MyFtp快捷方式是FTP文件夹外壳命名空间扩展的快捷方式。 如果要使用它,则必须绑定到快捷方式目标(通过shell命名空间),然后通过类似IShellFolder :: BindToObject或IShellItem :: BindToHandler的方法进行导航。 这是非常先进的东西,我不认为有什么内置的C#使其更容易。 这里有一些参考,让你开始。

  • Shell命名空间简介
  • 脚本化的Shell对象
  • 浏览Shell命名空间

您可以尝试在网络位置读取/写入文件的内容

 //to read a file string fileContent = System.IO.File.ReadAllText(@"\\MyNetworkPath\ABC\\testfile1.txt"); //and to write a file string content = "123456"; System.IO.File.WriteAllText(@"\\MyNetworkPath\ABC\\testfile1.txt",content); 

但是,您需要为正在运行应用程序的主体提供网络路径的读/写权限。

你可以使用FtpWebRequest类

这里是一些示例代码(来自MSDN):

 public static bool DisplayFileFromserver(Uri serverUri) { // The serverUri parameter should start with the ftp:// scheme. if (serverUri.Scheme != Uri.UriSchemeFtp) { return false; } // Get the object used to communicate with the server. WebClient request = new WebClient(); // This example assumes the FTP site uses anonymous logon. request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com"); try { byte [] newFileData = request.DownloadData (serverUri.ToString()); string fileString = System.Text.Encoding.UTF8.GetString(newFileData); Console.WriteLine(fileString); } catch (WebException e) { Console.WriteLine(e.ToString()); } return true; }