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

时间:2011-08-26 12:35:27

标签: c# .net windows

在Windows中,您可以使用“添加网络位置向导”将FTP站点添加为命名的网络位置。例如,用户可以添加名为“MyFtp”的位置。

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

4 个答案:

答案 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;
}