Viele Programme brauchen eine dauerhafte Speicherung. Die zwei meist gebrauchte Speicherarten sind Dateien und Datenbanken.
In diesem Tutorial werden wir Textdateien erläutern.
Das vordefinierte File Objekt hat mehrere Methoden (Funktionen) die das Handeln mit Textdateien sehr erleichtern.
Files locations – Es gibt einige bedeutende Stellen wo man Dateien speichern oder lesen kann.
File.DirAssets
Der Assets Ordner beinhaltet alle Dateien die mit dem Dateimanager zugefügt wurden. Diese Dateien sind nur lesbar (read only). Man kann keine neue Dateien in diesen Ordner hinzufügen (er ist in der apk Datei eingebunden).
File.DirInternal / File.DirInternalCache
Diese beiden Ordner sind im Hauptspeicher und sind ausschliesslich für Ihr Programm begrenzt. Andere Programme haben keinen Zugriff auf Dateien in diesen Ordnern.
Der Cache Ordner kann durch das Betriebssystem (OS) gelöscht werden falls es mehr Speicherplatz braucht.
File.DirRootExternal
Wurzelordner der Speicherkarte.
File.DirDefaultExternal
Default Ordner für Ihr Programm in der Speicherkarte.
Der Ordner ist:<Speicherkarte>/Android/data/<package>/files/
Er wird, falls nötig, erzeugt.
Wenn man eine von diesen Beiden Properties (Eigenschaften) aufruft wird automatisch die EXTERNAL_STORAGE Erlaubnis für Ihr Programm hinzugefügt.
Tipp: Man kann mit File.ExternalReadable und File.ExternalWritable nachprüfen ob eine Speicherkarte existiert und ob sie zur Verfügung steht.
File.ExternalReadable und File.ExternalWritable.
Das vordefinierte File Objekt (vordefiniert heisst dass man es nicht extra deklarieren braucht) beinhaltet mehrere Methoden um in Dateien zu schreiben und lesen.
Man kann es mit TextReader und TextWriter auch manuell machen.
TextReader und TextWriter sind nicht nur auf Textdateien begrenzt, man kann sie auch mit Anderen Streams benutzen.
TextReader und TextWriter haben einen Vorteil über File read/write Methoden wenn man mit grossen Dateien arbeitet. Die Filemethoden lesen die Dateien komplett und speichern deren Inhalt in den Speicher. In vielen Fällen ist dies die praktischste Lösung, jedoch wenn man mit sehr grossen Dateien arbeitet (mehr als 1 – 2 Mbytes) ist es vorteilhafter mit TextReader oder TextWriter zu arbeiten.
File.WriteString – Schreibt den gegebenen Text in eine neue Datei.
File.ReadString –Liest eine Datei in eine String Variable.
File.WriteList – Schreibt alle Werte einer Liste in eine Datei. Jeder Eintrag wird in seine eigene Zeile geschrieben.
Wenn ein Eintrag 'neue Zeile' (new line) Buchstaben enthält wird der Eintrag über mehrere Zeilen geschrieben, aber wenn man ihn zurück list wird er als mehrere Einträge behandelt.
File.ReadList – Liest eine Datei und speichert jede Zeile als ein Eintrag in der Liste.
File.WriteMap – Nimmt ein Map Objekt das ein Paar Werte enthält (Schlüssel und Wert) und speichert sie in eine Text Datei. Das Dateiformat ist unter 'Java Properties file' bekannt: .properties - Wikipedia, the free encyclopedia
Das Dateiformat ist nicht zu kompliziert da man es sehr leicht von Hand editieren kann.
Eine übliche Verwendung von File.WriteMap ist das speichern von Konfigurationsdaten (settings) in eine Datei.
File.ReadMap – Liest eine 'Property' Datei und schreibt die Schlüssel/Wert Paare in ein Map Objekt. Achtung: Die Reihenfolge der Werte kann verschieden sein als die Originalreihenfolge.
Beispiel:
In diesem Tutorial werden wir Textdateien erläutern.
Das vordefinierte File Objekt hat mehrere Methoden (Funktionen) die das Handeln mit Textdateien sehr erleichtern.
Files locations – Es gibt einige bedeutende Stellen wo man Dateien speichern oder lesen kann.
File.DirAssets
Der Assets Ordner beinhaltet alle Dateien die mit dem Dateimanager zugefügt wurden. Diese Dateien sind nur lesbar (read only). Man kann keine neue Dateien in diesen Ordner hinzufügen (er ist in der apk Datei eingebunden).
File.DirInternal / File.DirInternalCache
Diese beiden Ordner sind im Hauptspeicher und sind ausschliesslich für Ihr Programm begrenzt. Andere Programme haben keinen Zugriff auf Dateien in diesen Ordnern.
Der Cache Ordner kann durch das Betriebssystem (OS) gelöscht werden falls es mehr Speicherplatz braucht.
File.DirRootExternal
Wurzelordner der Speicherkarte.
File.DirDefaultExternal
Default Ordner für Ihr Programm in der Speicherkarte.
Der Ordner ist:<Speicherkarte>/Android/data/<package>/files/
Er wird, falls nötig, erzeugt.
Wenn man eine von diesen Beiden Properties (Eigenschaften) aufruft wird automatisch die EXTERNAL_STORAGE Erlaubnis für Ihr Programm hinzugefügt.
Tipp: Man kann mit File.ExternalReadable und File.ExternalWritable nachprüfen ob eine Speicherkarte existiert und ob sie zur Verfügung steht.
File.ExternalReadable und File.ExternalWritable.
Das vordefinierte File Objekt (vordefiniert heisst dass man es nicht extra deklarieren braucht) beinhaltet mehrere Methoden um in Dateien zu schreiben und lesen.
Man kann es mit TextReader und TextWriter auch manuell machen.
TextReader und TextWriter sind nicht nur auf Textdateien begrenzt, man kann sie auch mit Anderen Streams benutzen.
TextReader und TextWriter haben einen Vorteil über File read/write Methoden wenn man mit grossen Dateien arbeitet. Die Filemethoden lesen die Dateien komplett und speichern deren Inhalt in den Speicher. In vielen Fällen ist dies die praktischste Lösung, jedoch wenn man mit sehr grossen Dateien arbeitet (mehr als 1 – 2 Mbytes) ist es vorteilhafter mit TextReader oder TextWriter zu arbeiten.
File.WriteString – Schreibt den gegebenen Text in eine neue Datei.
File.ReadString –Liest eine Datei in eine String Variable.
File.WriteList – Schreibt alle Werte einer Liste in eine Datei. Jeder Eintrag wird in seine eigene Zeile geschrieben.
Wenn ein Eintrag 'neue Zeile' (new line) Buchstaben enthält wird der Eintrag über mehrere Zeilen geschrieben, aber wenn man ihn zurück list wird er als mehrere Einträge behandelt.
File.ReadList – Liest eine Datei und speichert jede Zeile als ein Eintrag in der Liste.
File.WriteMap – Nimmt ein Map Objekt das ein Paar Werte enthält (Schlüssel und Wert) und speichert sie in eine Text Datei. Das Dateiformat ist unter 'Java Properties file' bekannt: .properties - Wikipedia, the free encyclopedia
Das Dateiformat ist nicht zu kompliziert da man es sehr leicht von Hand editieren kann.
Eine übliche Verwendung von File.WriteMap ist das speichern von Konfigurationsdaten (settings) in eine Datei.
File.ReadMap – Liest eine 'Property' Datei und schreibt die Schlüssel/Wert Paare in ein Map Objekt. Achtung: Die Reihenfolge der Werte kann verschieden sein als die Originalreihenfolge.
Beispiel:
B4X:
Sub Process_Globals
End Sub
Sub Globals
End Sub
Sub Activity_Create(FirstTime As Boolean)
If File.ExternalWritable = False Then
Msgbox("Cannot write on storage card.", "")
Return
End If
SaveStringExample
ReadStringExample
WriteListExample
ReadListExample
WriteMapExample
ReadMapExample
WriteTextWriter
ReadTextReader
End Sub
Sub SaveStringExample
File.WriteString(File.DirRootExternal, "String.txt", _
"This is some string" & CRLF & "and this is another one.")
End Sub
Sub ReadStringExample
Msgbox(File.ReadString(File.DirRootExternal, "String.txt"), "")
End Sub
Sub WriteListExample
Dim List1 As List
List1.Initialize
For i = 1 To 100
List1.Add(i)
Next
File.WriteList(File.DirRootExternal, "List.txt", List1)
End Sub
Sub ReadListExample
Dim List1 As List
'We are not initializing the list because it just holds the list that returns from File.ReadList
List1 = File.ReadList(File.DirRootExternal, "List.txt")
Msgbox("List1.Size = " & List1.Size & CRLF & "The third item is: " & List1.Get(2), "")
End Sub
Sub WriteMapExample
Dim Map1 As Map
Map1.Initialize
For i = 1 To 10
Map1.Put("Key" & i, "Value" & i)
Next
File.WriteMap(File.DirRootExternal, "Map.txt", Map1)
End Sub
Sub ReadMapExample
Dim Map1 As Map
'Again we are not initializing the map.
Map1 = File.ReadMap(File.DirRootExternal, "Map.txt")
'Append all entries to a string builder
Dim sb As StringBuilder
sb.Initialize
sb.Append("The map entries are:").Append(CRLF)
For i = 0 To Map1.Size - 1
sb.Append("Key = ").Append(Map1.GetKeyAt(i)).Append(", Value = ")
sb.Append(Map1.GetValueAt(i)).Append(CRLF)
Next
Msgbox(sb.ToString,"")
End Sub
Sub WriteTextWriter
Dim TextWriter1 As TextWriter
TextWriter1.Initialize(File.OpenOutput(File.DirRootExternal, "Text.txt", False))
For i = 1 To 10
TextWriter1.WriteLine("Line" & i)
Next
TextWriter1.Close
End Sub
Sub ReadTextReader
Dim TextReader1 As TextReader
TextReader1.Initialize(File.OpenInput(File.DirRootExternal, "Text.txt"))
Dim line As String
line = TextReader1.ReadLine
Do While line <> Null
Log(line) 'write the line to LogCat
line = TextReader1.ReadLine
Loop
TextReader1.Close
End Sub
Last edited: