Dateioperationen bei Processing
(EN google-translate)
(PL google-translate)
String-Zeilen speichern und einlesen
Der Speicherort ist Default-mäßig der Ordner, in dem auch der aktuell laufende Sketch gespeichert ist. Es ist aber auch möglich, absolute Pfade anzugeben.
void setup() { String text = "Zeile eins\nZeile zwei\n\n \nZeile drei\n\n"; saveStrings("test.txt",new String[] {text}); String lines[] = loadStrings("test.txt"); for(int i=0;i<lines.length;i++) { println(i+".:"+lines[i]); } }
Code 0-1: Beispiel
0.:Zeile eins 1.:Zeile zwei 2.: 3.: 4.:Zeile drei 5.: 6.:
Code 0-2: Konsolenausgabe
split() - Strings zerlegen
void setup() { String text = "Zeile eins\nZeile zwei\n\n \nZeile drei\n\n"; String woerter[] = split(text,'\n'); for(int i=0;i<woerter.length;i++) { println(i+".:"+woerter[i]); } }
Code 0-3: Beispiel
0.:Zeile eins 1.:Zeile zwei 2.: 3.: 4.:Zeile drei 5.: 6.:
Code 0-4: Konsolenausgabe
splitTokens() - Strings zerlegen
Die split-Methode ist etwas störanfällig, wenn zwischen den Betriebssystemen gewechselt wird. Sicherer ist eine Methode splitTokens(), die auf White-Spaces zwischen den Wörtern prüft und danach zerlegt. Dies wird im folgenden umgesetzt:
void setup() { String text = "Zeile eins\nZeile zwei\n\n \nZeile drei\n\n"; String woerter[] = splitTokens(text); for(int i=0;i<woerter.length;i++) { println(i+".:"+woerter[i]); } }
Code 0-5: Beispiel
0.:Zeile 1.:eins 2.:Zeile 3.:zwei 4.:Zeile 5.:drei
Code 0-6: Konsolenausgabe
Zahlen-Arrays mit Hilfe der Table-Methode speichern und laden
void setup() { double[][] matrix = {{1.0,2.0},{3.0,4.0}}; Table tabelle = createTable(); for(int spalten = 0;spalten<matrix[0].length;spalten++) tabelle.addColumn("Spalte Nr."+spalten); for(int zeile=0;zeile<matrix.length;zeile++) { TableRow ts = tabelle.addRow(); for(int spalte=0;spalte<matrix[zeile].length;spalte++) { ts.setDouble(spalte,matrix[zeile][spalte]); } } saveTable(tabelle,"tabelle.csv"); Table tabelle2 = loadTable("tabelle.csv", "header"); println(tabelle2.getRowCount() + " Tabellenspalten"); for(TableRow row : tabelle2.rows()) { for(int i=0;i<2;i++) { print(row.getDouble(i)+" "); } println(); } }
Code 0-7: Beispiel
2 Tabellenspalten 1.0 2.0 3.0 4.0
Code 0-8: Konsolenausgabe
2 Tabellenspalten Spalte Nr.0,Spalte Nr.1 1.0,2.0 3.0,4.0
Code 0-9: Datei tabelle.csv
Satt eines Dateinamens, kann als Quelle der Tabelle auch eine URL angegeben werden. Hier ein Test:
tabelle.csv wurde vorher nach /mnt-system/soja/htdocs kopiert und der lokale Server gestartet.
void setup() { Table tabelle2 = loadTable("http://localhost:8000/tabelle.csv", "header"); println(tabelle2.getRowCount() + " Tabellenspalten"); for(TableRow row : tabelle2.rows()) { for(int i=0;i<2;i++) { print(row.getDouble(i)+" "); } println(); } }
Code 0-10: Beispiel, bei dem eine Tabelle von einem Server geladen wird. Die Spalten müssen durch Kommata getrennt sein.
2 Tabellenspalten 1.0 2.0 3.0 4.0
Code 0-11: Konsolenausgabe
Tabellen und Strings (Beispiel aus Processing-Reference)
Table table; void setup() { table = createTable(); table.addColumn("id"); table.addColumn("species"); table.addColumn("name"); TableRow newRow = table.addRow(); newRow.setInt("id", table.getRowCount() - 1); newRow.setString("species", "Panthera leo"); newRow.setString("name", "Lion"); TableRow newRow2 = table.addRow(); newRow2.setInt("id", table.getRowCount() - 1); newRow2.setString("species", "Kleines Nagetier"); newRow2.setString("name", "Hamster Mopsi"); saveTable(table, "tabelle2.csv"); table = loadTable("tabelle2.csv", "header"); println(table.getRowCount() + " total rows in table"); for (TableRow row : table.rows()) { int id = row.getInt("id"); String species = row.getString("species"); String name = row.getString("name"); println(name + " (" + species + ") has an ID of " + id); } }
Code 0-12: Beispiel
2 total rows in table Lion (Panthera leo) has an ID of 0 Hamster Mopsi (Kleines Nagetier) has an ID of 1
Code 0-13: Konsolenausgabe
id,species,name 0,Panthera leo,Lion 1,Kleines Nagetier,Hamster Mopsi
Code 0-14: Datei tabelle2.csv
Alternative zum CSV-Format mit Kommatrennung ist das tsv-Format mit Tab-Trennung.