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.