在Windows中,您可以使用“添加网络位置向导”将FTP站点添加为命名的网络位置。例如,用户可以添加名为“MyFtp”的位置。
在.Net中,如何在该位置访问(列出,读取和写入)文件? Windows是否抽象出实现(WebDAV,FTP或其他)并使其看起来像我的.Net程序的本地文件夹?如果是这种情况,如何在path
中指定File.WriteAllText(path, content)
参数?如果没有,我该如何访问这些文件?
答案 0 :(得分:4)
不,Windows仅在资源管理器中处理。 (他们可能在较新版本的Windows中删除了它。)您必须使用一些内置类或自己实现FTP,WebDav和任何其他协议。
答案 1 :(得分:2)
网络位置中的MyFtp快捷方式是FTP文件夹shell命名空间扩展的快捷方式。如果要使用它,则必须绑定到快捷方式目标(通过shell命名空间),然后通过IShellFolder :: BindToObject或IShellItem :: BindToHandler等方法进行导航。这是非常先进的东西,我不认为C#内置了任何内容以使其更容易。以下是一些可以帮助您入门的参考资料。
答案 2 :(得分:1)
您可以尝试此操作来读取/写入网络位置的文件内容
//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);
但是您需要为运行应用程序的主体提供网络路径的读/写权限。
答案 3 :(得分:0)
您可以使用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;
}