Autor Beitrag
Raven280438
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: Mi 03.08.11 09:36 
Hi,

ich habe folgende Methode um zu prüfen, ob ein Verzeichnis auf einem FTP-Server existiert:
ausblenden 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.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.Ftp.GetDateTimestamp;) um zu prüfen, ob ein Verzeichnis existiert?

WebRequestMethods.Ftp.GetFileSize zum Ermitteln ob eine Datei existiert, benötigt nur einen Bruchteil der Zeit.


Gruß
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mi 03.08.11 13:38 
Hallo,

die FtpWebRequest-Klasse scheint nicht gerade sehr universell zu sein... Schau dir mal diese FTP-Client-Bibliothek an.

Grüße,
Yogu
Raven280438 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mi 03.08.11 14:42 
user profile iconRaven280438 hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconRaven280438 hat folgendes geschrieben Zum zitierten Posting springen:
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.