configDb und FileRead, FileWrite bzw. FileList / FileExist ?

Begonnen von Wzut, 28 September 2019, 14:13:46

Vorheriges Thema - Nächstes Thema

Wzut

Udo hat schon öfters hier im Forum geschrieben man solle doch bitte in seinen Modulen für Dateioperationen FileRead & FileWrite benutzen
damit ggf. die Dateien in der DB gespeichert werden.
Ich bin z.Z. dabei eines meiner ersten Module zu überarbeiten und dabei steht auch das Thema Datei IO auf der DoTo.
FileRead bzw FileWrite zu benutzen ist kein Problem, wo ich ein Problem habe, ist das mir eigenlich eine FHEM Funktion FileList fehlt.
Ich muß irgendwann im Modul eine Liste bauen die bereits gespeicherte Dateien enthält, geht ja recht einfach mittels px(ls | grep irgendwas)
Was aber tun wenn die Dateien in der DB liegen ? in configDB findet sich eine Funktion  _cfgDBFileList.
Muss ich mir jetzt eine Funktion FileList selbst bauen die wie FileRead zuerst auf configDBUsed prüft und dann den Weg ls oder  _cfgDBFileList geht
oder gibt es einen einfacheren bereits vorhanden Weg ?

Die Überprüfung ob es eine Datei überhaupt gibt habe ich bisher immer mit -e $filename gemacht, das wollte ich umstellen auf FileRead und den Rückgabewert auswerten
oder gibt es auch hier wieder etwas schöneres ala FileExist ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

CoolTux

Naja das testen ob eine Datei da ist sollte ja einfach gehen in dem Du versuchst sie zu lesen (öffnen)
Wenn Du aber eine Liste von Dateien einlesen willst ist das was anderes. Dann brauchst in der Tat eine Funktion.
Ich habe überlegt ob sowas vielleicht Global Sinn machen würde, also fhem.pl. Aber ich würde behaupten das es eher selten vor kommt das man nicht genau weiß wie die Datei heisst.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Bisherige Module haben das Problem nicht, da sie aus dem FHEM-Device bestimmen koennen, wie die Datei heisst.

Falls das in deinem Fall keine Alternative ist, dann koennte ich FW_fileList nach fhem.pl kopieren, da wird bereits configDb angesprochen.


Wzut

THX Rudi, ich habe mir jetzt mal FW_fileList angeschaut und werde im ersten Schritt eine sub FileList bauen die deine Variante mit opendir , readdir plus den unterm Teil mit cfgDB_FW_File 1:1 kopiert. Sortierung brauche ich an de Stelle nicht, da das eh später FHEMWEB für die Drop-Down Listen Ausgabe von set/get komplett übernimmt.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher