c # - Sådan læses og skrives til en Windows 'Netværksplacering'

Indlæg af Hanne Mølgaard Plasc

Problem



I Windows kan du tilføje et FTP-websted som en navngivet netværksplacering ved hjælp af 'Add Network Location Wizard'. For eksempel kan en bruger tilføje et sted kaldet 'MyFtp'.


I .Net, hvordan kan jeg få adgang til (liste, læse og skrive) filer på den pågældende placering? Er Windows abstrakt væk implementeringen (WebDAV, FTP eller andet) og få det til at ligne en lokal mappe til mit. Net-program? Hvis det er tilfældet, hvordan specificerer jeg parameteren path i File.WriteAllText(path, content)? Hvis ikke, hvordan kan jeg få adgang til filerne?

Bedste reference


Nej, Windows håndterer kun det i Explorer. (De kan have fjernet dette i nyere versioner af Windows.) Du skal bruge nogle indbyggede klasser eller implementere FTP, WebDav og enhver anden protokol selv.

Andre referencer 1


Myftp-genvej i netværksstederne er en genvej til navneudvidelsen FTP Folders shell. Hvis du vil bruge det, skal du binde til genvejsmålet (via navns navneområde) og derefter navigere via metoder som IShellFolder :: BindToObject eller IShellItem :: BindToHandler. Dette er meget avancerede ting, og jeg tror ikke, at der er noget indbygget i C # for at gøre det nemmere. Her er nogle referencer for at komme i gang.



  • Introduktion til Shell Namespace

  • Scriptable Shell Objects

  • Naviger Shell-navnrummet


Andre referencer 2


Du kan prøve at læse/skrive indholdet af en fil på netværksstedet [5] [6] [7]


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


Men du skal give læs/skrive tilladelser til netværkssti til den hovedstol, som applikationen kører på.

Andre referencer 3


du kan bruge FtpWebRequest-klassen [8]


her er nogle sample-kode (fra 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;
}