Entwickler-Ecke

ASP.NET und Web - FTP - Datei oder Verzeichnis?


KanneM - Do 07.06.12 16:34
Titel: FTP - Datei oder Verzeichnis?
Liebe Community,

bevors kommt: Ich habe im Forum gesucht und mit Google, beidesmal nichts gefunden!

Problem ist folgendes: Ich will Verzeichnisse rekursiv auslesen, dazu muss ich unterscheiden ob der Pfad auf ne Datei ider ein Verzeichnis deutet. Bisher bin cih wie folgt vorgegangen:

C#-Quelltext
1:
if(pfad.Contains(".")){...}                    

Nachdem in der vollen URL aber zwangsläufig Punkte vorkommen (http://ftp.SERVER.de, usw.), habe ich das immer weng unsauber gelöst.

Frage: Gibt es eine Lösung, mit der man abfragen könnte, ob der Pfad auf ne Datei oder n Verzeichnis deutet? Also quasi so änhlich wie

C#-Quelltext
1:
if(pfad.IsFile()){...}                    


Danke schonmal und ruhigen Feiertag noch,

Kanne


Palladin007 - Do 07.06.12 16:52

Dass du da nichts gefunden hast, glaub ich nicht so ganz...
Naja, wie dem auch sei. So direkt ne Methode gibt es dafür ja auch nicht.


Zu prüfen, was das in dem Pfad nun ist, geht ganz einfach:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
static string CheckPath(string Path)
{
    if (System.IO.Directory.Exists(Path))
        return "Directory";
    else if (System.IO.File.Exists(Path))
        return "File";
    else return "NotExist";
}

(Hab das hier grad so aus dem Stegreif getippt, wenn jemand Schreibfehler findet, bitte verzeihen^^)



Ganz einfaches Prinzip, oder?


KanneM - Fr 08.06.12 07:59

Ja das ist klar, aber ich bin/war der Überzeugung das geht nur für Systempfade? (C://NeuerOrdner/Datei.txt)
Sollte es so sein: Ich bräuchte das ganze ja für Online-Pfade (ftp://server.de/Verzeichnis/Datei.txt oder http://server.de/Datei.txt)

Ich werde das später mal testen, melde mich nochmal falls es geht :)

Danke schonmal,
Kanne

EDIT: Es geht wirklich nicht...



C#-Quelltext
1:
2:
3:
4:
if(System.IO.Directory.Exists("http://SERVER.de/DATEI.txt"))
                    MessageBox.Show("OK");
                else
                    MessageBox.Show("Fehler");


Palladin007 - Fr 08.06.12 16:03

Ok, dann muss ich mich ausklinken.

Mit der Online-Technologie bin ich noch nicht so fit


Th69 - Sa 09.06.12 09:47

Hallo Michi,

es kann ja sowohl Verzeichnisse mit Punkt als auch Dateinamen ohne Punkt geben.
Da wirst du wohl einen FtpWebRequest mit dem Befehl ListDirectoryDetails absetzen müssen und dann die Antwort parsen:
How to: List Directory Contents with FTP [http://msdn.microsoft.com/de-de/library/ms229716.aspx]
Sample code for parsing FtpWebRequest response for ListDirectoryDetails [http://blogs.msdn.com/b/adarshk/archive/2004/09/15/230177.aspx] (hier dann auf FileStruct.IsDirectory prüfen)


KanneM - So 10.06.12 17:05

Ich habe mir es jetzt so überlegt, dass ich Datein und Ordner Liste und dann dementsprechend sortiere.

Danke euch^^