Entwickler-Ecke
Verteilte Systeme - [FTP] Directory Exists
Raven280438 - Mi 03.08.11 09:36
Titel: [FTP] Directory Exists
Hi,
ich habe folgende Methode um zu prüfen, ob ein Verzeichnis auf einem FTP-Server existiert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| public static bool DirectoryExists(String Pfad,String User,String Pass) { try { FtpWebRequest request = (FtpWebRequest)WebRequest.Create(Pfad); request.Credentials = new NetworkCredential(User, Pass); request.Method = WebRequestMethods.http://Ftp.GetDateTimestamp; request.Timeout = 5000; request.UsePassive = true;
FtpWebResponse response = (FtpWebResponse)request.GetResponse(); } catch (WebException ex) { FtpWebResponse response = (FtpWebResponse)ex.Response; if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable) { return false; } else { return true; } }
return true; } |
Diese Methode ist aber relativ langsam (ich schätze 0.2 Sekunden pro Verzeichnis).
Gibt es eine schnellere Methode (
request.Method = WebRequestMethods.http://Ftp.GetDateTimestamp;) um zu prüfen, ob ein Verzeichnis existiert?
WebRequestMethods.http://Ftp.GetFileSize zum Ermitteln ob eine Datei existiert, benötigt nur einen Bruchteil der Zeit.
Gruß
Raven280438 - Mi 03.08.11 13:49
Hi,
danke für den Link, ich werds mir mal angucken.
Kann man damit auch prüfen, ob ein Verzeichnis/Datei existiert bevor man sie hochläd?
Wie siehts mir der Geschwinigkeit aus?
Gruß
Yogu - Mi 03.08.11 14:42
Raven280438 hat folgendes geschrieben : |
Kann man damit auch prüfen, ob ein Verzeichnis/Datei existiert bevor man sie hochläd? |
Mit der Methode
FtpFileExists wird geprüft, ob eine Datei existiert; für ein Verzeichnis musst du wahrscheinlich die Unterverzeichnisse des übergeordneten Ordners auflisten lassen und schauen, ob das gewünschte dabei ist.
Raven280438 hat folgendes geschrieben : |
Wie siehts mir der Geschwinigkeit aus? |
Ich sehe gerade, dass die
TCPclient-Klasse
FtpWebRequest benutzt - sie ist dann wahrscheinlich genau so langsam.
Allerdings scheint es möglich zu sein, mit einem
FtpWebRequest mehrere Aktionen durchzuführen - da gibt's eine Eigenschaft
KeepAlive. Wenn dabei nicht für jede einzelne Aktion die Anmeldedaten neu verschickt werden, dürfte das ordentlich was an Geschwindigkeit bringen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!