1 Star2 Stars3 Stars4 Stars5 Stars (1 Bewertungen, Durchschnitt: 5.00 von 5)
Loading ... Loading ...

Mein Ansatz um das Problem zu lösen:

  • Auf FTP Server einloggen
  • In das per Create(uri+ dirName) Verzeichnis versuchen zu wechseln
  • Bei Erfolg => return true, ansonsten exisitiert das Verzeichnis nicht
public bool isDicExists(String dirName) {
   FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri + dirName);
   request.Credentials = new NetworkCredential(ftpUserID,ftpPassword);
   request.Method = WebRequestMethods.Ftp.PrintWorkingDirectory;
   try {
      FtpWebResponse response = (FtpWebResponse)request.GetResponse();
      response.close();
      return true; // Dir exist
   }
   catch (Exception ex) {
      return false; // Dir doesn´t exist
   }
}

Habt ihr bessere Vorschläge? Dann immer her damit.

Popularity: 43% [?]

Link setzen bei (Social Bookmarks):

Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • del.icio.us
  • Digg
  • Google Bookmarks
  • MisterWong
  • Y!GG
  • StumbleUpon
  • Webnews
  • YahooMyWeb
  • Reddit
  • Folkd
  • Linkarena
  • Newstube
Tags:
, , , , , , , , , , , ,

Verwandte Artikel

5 Antworten zu “FTP – Prüfen ob Verzeichnis existiert”
  1. Andreas Adler sagt:

    Sehr hilfreicher Post, hab eben danach gesucht, wie man überprüft, ob ein Verzeichnis auf dem Server vorhanden ist oder nicht. Einen besseren Vorschlag hätte ich nicht. Man könnte es zwar auch über “ListDirectoryDetails” machen, aber “PrintWorkingDirectory” ist wahrscheinlich Ressourcen-schonender, weil dann vom Server keine Informationen des Verzeichnisses gesammelt werden, wenn es existiert.
    Ich würde aber noch response.close(); ausführen, bevor true zurückgegeben wird. Ist sauberer, finde ich.

    Aber noch etwas anderes: Ich hab jetzt äquivalent zur Überprüfung eines Verzeichnisses eine Funktion programmiert, die zurückgibt, ob eine Datei vorhanden ist oder nicht.
    Mein erster Ansatz ging über die Methode “GetFileSize”. Allerdings wurde dann beim GetRespone jedes Mal die Ausnahme mit dem Fehlertext “Der Remoteserver hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar (z.B. nicht gefunden oder kein Zugriff).” ausgelöst. Auch wenn die Datei auf dem Server vorhanden war. Das Problem war dann, wie ich in einem Forenthema nachgelesen habe (http://forums.msdn.microsoft.com/en-US/netfxnetcom/thread/0c38814e-d8e3-49f3-8818-b5306cc100ce/) dass, obwohl die Eigenschaft UseBinary des FtpWebRequst-Objekts auf true stand, vor dem Senden des SIZE-Befehlt der Modus nicht mit “TYPE I” auf Binary umgestellt wurde, weshalb UNIX-Server dann den Fehlercode 550 zurückgeben (SIZE not allowed in ASCII mode).
    Um dann doch noch prüfen zu können, ob die Datei existiert, habe ich “ListDirectoryDetails” verwendet.

    Liebe Grüße,

    Andreas

  2. tobbe sagt:

    Hallo Andreas,

    super das dir der Vorschlag gefallen hat. “response.close();” habe ich dem Artikel noch mit hinzugefügt. Ist so wirklich sauberer.
    Hast du einen Link zu deinem Snippet mit der Fileüberprüfung? Würde ich gerne noch mit hinzufügen oder poste es einfach als Comment. Würde dann einen neuen Artikel daraus machen.

    Viele Grüße
    Tobbe

  3. Andreas Adler sagt:

    Hi Tobbe,

    musste noch einen VB.NET 2 C# Converter suchen, das verringert die Wahrscheinlichkeit, dass sich ein Fehler einschleicht, wenn ich’s selbst geschrieben hätte (hab auf der Arbeit immer mit VB.NET zu tun, setz mich privat aber jetzt mehr mit C# auseinander.)

    Hier meine Funktion:

    public bool FileExists(string FilePath)
    {
    FtpWebRequest req = (FtpWebRequest)WebRequest.Create(FilePath);
    req.Credentials = new NetworkCredential(UserName, Password);
    req.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

    try
    {
    FtpWebResponse resp = (FtpWebResponse)req.GetResponse;
    resp.Close();

    return true; // File exist
    }
    catch (Exception ex)
    {
    return false; // File doesn’t exist
    }
    }

    Grüße,

    Andreas

  4. Blog des IT-Service Burggraf » FTP - Prüfen ob Datei existiert sagt:

    [...] meinem Snippet “FTP- Prüfen ob Verzeichnis existiert” hat Andreas Adler noch einen passenden Snippet geliefert. Mit diesem ist es möglich zu [...]

  5. tobbe sagt:

    Hey Andreas,
    habe deinen Snippet noch mit hinzugefügt. Hoffen wir das auch viele andere Nutzer noch davon profitieren.
    Vielen Dank
    Tobbe

Hinterlasse einen Kommentar