Seite 1 von 1

Prüfen ob Ordner auf FTP-Server existiert!!

Verfasst: 21. Mai 2010 17:13
von flomll
Hallo Leute,

ich schreibe an einem FTP-Client Programm. Doch jetzt stehe ich vor dem Problem, wie ich prüfen kann ob ein Ordner auf dem Server bereits existiert order nicht. Auf der Lokalen Festplatte geht das wunderbar mit QDir.

Code: Alles auswählen

QDir dir("/Irgendwas/und/so");
if(dir.exsists())
{
    // write code here...
}
Doch diese Funktion unterstütz der QFtp nicht. Habt ihr da eine Lösung?

Verfasst: 21. Mai 2010 17:19
von pfid

Verfasst: 21. Mai 2010 17:20
von franzf
Mit QFtp::list das "Irgendwas/und" auflisten, und schauen ob ein Verzeichnis "so" existiert?
Oder wenn du reingehen willst gleich ein cd() und im SIGNAL commandFinished prüfen, ob alles klar ging.

Verfasst: 21. Mai 2010 17:21
von MiKla
Wie wäre es mit

Code: Alles auswählen

int QFtp::list ( const QString & dir  = QString() )
und die Liste durchgehen und schauen ob Directory vorhanden ist?

Michael

edit:
viel zu spät :-(

Verfasst: 21. Mai 2010 17:49
von flomll
Danke erst mal an alle. Hier bekommt man so schnell Antworten. Das ist wirklich toll! :D
franzf hat geschrieben:...
Oder wenn du reingehen willst gleich ein cd() und im SIGNAL commandFinished prüfen, ob alles klar ging.
Diese Lösung gefällt mir schon sehr gut. Jedoch arbeitet das ganze ja asynchron. Deshalb kann ich dann nicht:

Code: Alles auswählen

cd()
put()
gleich hintereinander durchführen. Denn es könnte ja sein, dass zu dieser Zeit das commandFinished noch nicht ausgeführt wurde.

Da müsste ich dann darauf warten oder? Gibt es vielleicht auch eine andere Lösung dafür außer Zeit tot zu schlagen?

Verfasst: 21. Mai 2010 18:06
von MiKla
Das wäre dann die andere Lösung, mit QFtp::list() nachauen ob das Verzeichnis da ist, oder?

Michael

Verfasst: 21. Mai 2010 18:58
von franzf
flomll hat geschrieben:Diese Lösung gefällt mir schon sehr gut. Jedoch arbeitet das ganze ja asynchron. Deshalb kann ich dann nicht:

Code: Alles auswählen

cd()
put()
gleich hintereinander durchführen. Denn es könnte ja sein, dass zu dieser Zeit das commandFinished noch nicht ausgeführt wurde.
Deshalb bekommst du ein SIGNAL(commandFinished(int,bool)) geschickt. merk dir in deiner Klasse die ID für den letzten cd(), dann kannst du im entsprechenden SLOT dieses command eindeutig identifizieren. Der bool sagt dir, ob es glatt ging. falls false -> mkdir, falls true -> put().
Ist in jedem Fall schneller als sich alle SIGNAL senden zu lassen, bis man erkennt dass das Verzeichnis nicht existiert (Die Variante mit list()).

Verfasst: 25. Mai 2010 11:01
von pfid
Michael.Klank hat geschrieben:Das wäre dann die andere Lösung, mit QFtp::list() nachauen ob das Verzeichnis da ist, oder?

Michael
http://doc.qt.nokia.com/4.5/qftp.html#list
ist genauso asynchron ;)