如何读写一个Windows“网络位置”
本文关键字:网络 网络位置 Windows 位置 何读写 读写 一个 | 更新日期: 2023-09-27 18:06:48
在Windows中,您可以使用"添加网络位置向导"将FTP站点添加为命名的网络位置。例如,用户可以添加一个名为"MyFtp"的位置。
在。net中,我如何访问(列表,读取和写入)该位置的文件?Windows是否抽象了实现(WebDAV, FTP或其他),使它看起来像我的。net程序的本地文件夹?如果是这种情况,我如何在File.WriteAllText(path, content)
中指定path
参数?如果没有,我如何访问这些文件?
不,Windows只在资源管理器中处理这个问题。(他们可能在新版本的Windows中删除了这个)你将不得不使用一些内置的类或自己实现FTP, WebDav和任何其他协议
Network Locations中的MyFtp快捷方式是FTP Folders shell命名空间扩展名的快捷方式。如果你想使用它,你必须绑定到快捷目标(通过shell命名空间),然后通过像ishelfolder::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-Class
下面是一些示例代码(来自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;
}