Donnerstag, 16. Juni 2011

[Tutorial] Dateien erstellen, schreiben und löschen

Da ich nun schon in den letzten Profilen mir Dateien handiert habe, kommt nun etwas verspätet ein Tutorial zum Umgang mit Dateien in Tasker. Dateien eigenen sich immer dann wenn Informationen daurhaft gespeichert werden sollen, oder an andere Programme exportiert oder von anderen Quellen importiert werden sollen. Tasker bietet dafür die nötigen Funktionen.

Zuerst einmal sollen alle Funktionen kurz vorgestellt werden, sie finden sich im Menü "Files":
  • Browse Files
    • Öffnet die App "Magic Explorer" mit dem angegebenen Pfad
  • Copy File
    • kopiert eine Datei an einen anderen Ort, auch ein Umbenennen ist möglich
  • Create Directory
    • erstellt einen neuen Ordner im angegebenen Pfad, auch ein ganzer Baum ist über "Create All" möglich
  • Delete Directory
    • löscht ein angegebenes Verzeichnis, Achtung man kann damit die ganze SD-Karte löschen!
  • Move
    • kann zum Verschieben und Umbenennen von Dateien genutzt werden 
  • Open File
    • Öffnet eine Datei mit der Standardapp
  • Read Line
    • liest eine Zeile der angegebenen Datei in die angegebene Variable ein. Liest mit jedem Aufruf automatisch die nächste Zeile bis zum Ende der Datei aus. Auch eine bestimmte Zeile kann mit Hilfe einer Variablen angegeben werden. Wenn das Ende der Datei erreicht ist wird EOF (End of File)  in die angegebene Variable geschrieben.
  • Read Paragraph
    • Hat die gleiche Funktion wie Read Line, nur das nun ein gesamter Paragraph eingelesen wird.
  • UnZip File
    • entpackt ein zip Archiv und löscht dieses danach, wenn angegeben
  • Write File
    • schreibt den angegebenen Text oder Inhalt einer Variablen in eine Datei. Auch eine Kombination aus Text und Variable ist möglich. Ist die angegebene Datei schon vorhanden, wird der neue Inhalt in eine neue Zeile geschrieben insofern "Append" gesetzt wurde. Ansonsten wird sie überschrieben.
  • Zip File
    • erstellt ein zip Archiv aus einer Datei.

Meistens wird man wohl "Read Line" und "Write File" nutzen. Deswegen hier mal ein kleines Beispiel dafür. Tasker soll nacheinander alle Zeilen der Datei "datei1.txt" auslesen und mit Zeilennummer in eine neue Datei "datei2.txt" schreiben.
  • 1. Variable -> Variable Clear
    • Name: %COUNT 
  • 2. Variable -> Variable Add
    • Name: %COUNT
    • Value: 1 
  • 3. File -> Read Line
    • File: datei1.txt
    • To Var: %INHALT
  • 4. Tasker -> If %INHALT !~  EOF
  • 5. File -> Write File
    • File: datei2.txt
    • Text: %COUNT %INHALT
    • Append: Yes
  • 6. Tasker -> Goto
    • Action: 2
  • 7. Tasker -> End If 
  • 8. Alert -> Popup
    • Text: %COUNT Zeilen eingelesen
Mit Hilfe von "Goto" haben wir eine Schleife gebaut, die genau so oft ausgeführt wird, wie Zeilen in der Datei vorhanden sind. Damit wir keine Endlosschleife kreieren brauchen wir eine Abbruchbedingung. Dazu nutzen wie die If-Abfrage. Solange der Inhalt der aktuellen Zeile nicht "EOF" ist, wird dieser in die neue Datei geschrieben und danach die nächste Zeile eingelesen. Die Variable %COUNT enthält dabei die aktuelle Zeilennummer. Sie wird nach jedem durchgang um 1 erhöht. Zum Schluss wird noch die Anzahl der eingelesenen Zeilen ausgegeben.

Neben den Aktionen gibt es auch Datei-Trigger um Profile anzulegen. Diese finden sich unter "Event -> File", so kann auf das Öffnen, Bearbeiten, Schließen und Verschieben von Dateien reagiert werden. Dabei muss beachtet werden dass eine Datei immer erst geöffnet wird, dann bearbeitet und dann geschlossen, also auch die Events in der Reihenfolge auftreten. Weiterhin sollte man beachten das ein Kopieren des Dateiinhalts auch ein Öffnen der Datei benötigt. Dass heißt also, wenn ein Profil auf das Öffnen einer Datei reagiert und diese dann kopiert, wird sie wieder geöffnet und somit der Kopiertask wieder aussgeführt. Dies führt zu einer Endlosschleife und Tasker stürzt ab. Um das zu umgehen muss im Profil eine begrenzte Anzahl an Wiederholungen angegeben werden. Dafür einfach in das "Profile Properties" Menü gehen und dort bei "Limit Repeats" eine "1" eintragen. Nun kann das Profil nur einmal gleichzeitig laufen.

Viel Spaß beim Lesen und Schreiben von Dateien :)

Kommentare:

  1. Hallo,

    kann ich auch eine Datei via WLAN auf einem anderen System schreiben oder lesen (also \\192.168.1.1\C$\Temp\test.txt)?
    Und wenn ja, wie? Weil ich bekomme über die Tastatur kein "\" rein.

    Gruß Rookie

    AntwortenLöschen
  2. Glaube nicht dass dies mit Tasker geht.
    Aber mit Tasker kannst du ja Skripte starten, mit einem SL4A Python Skript zBsp. lässt sich sowas sicherlich realisieren.

    AntwortenLöschen
  3. Hallo, Sie sollten aber dennoch die Rechtschreibung beachten: "hantieren" schreibt man mit 't'; ist ein recht peinlicher Fehler, gerade wenn man Tutorials schreibt. Verbessern Sie's und löschen Sie meinen Kommentar.

    AntwortenLöschen
  4. Er hat hantieren garandierd nicht extra falsch geschrieben.

    AntwortenLöschen
  5. "mir dateien handiert" heisst übersetzt dateien fürs handy lesbar machen

    AntwortenLöschen
  6. Hallo Daniel,
    erstmal Danke! für die super Tutorials.
    Ich würde gerne in einer Datei festhalten, wann eine beliebige App auf das Internet zugreift. Als Daten möchte ich den Namen der App, die Zeit des Zugriffs und die Ziel IP-Adresse notieren. Ist das mit Tasker irgendwie möglich?
    Vielen Dank, Frank

    AntwortenLöschen