kramann.info
© Guido Kramann

Login: Passwort:










3.6.1 Dateioperationen bei Processing

3.6.1 (EN google-translate)

3.6.1 (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 3.6.1-1: Beispiel

0.:Zeile eins
1.:Zeile zwei
2.:
3.:  
4.:Zeile drei
5.:
6.:

Code 3.6.1-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 3.6.1-3: Beispiel

0.:Zeile eins
1.:Zeile zwei
2.:
3.:  
4.:Zeile drei
5.:
6.:

Code 3.6.1-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 3.6.1-5: Beispiel

0.:Zeile
1.:eins
2.:Zeile
3.:zwei
4.:Zeile
5.:drei

Code 3.6.1-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 3.6.1-7: Beispiel

2 Tabellenspalten
1.0 2.0 
3.0 4.0 

Code 3.6.1-8: Konsolenausgabe

2 Tabellenspalten
Spalte Nr.0,Spalte Nr.1
1.0,2.0
3.0,4.0

Code 3.6.1-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 3.6.1-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 3.6.1-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 3.6.1-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 3.6.1-13: Konsolenausgabe

id,species,name
0,Panthera leo,Lion
1,Kleines Nagetier,Hamster Mopsi

Code 3.6.1-14: Datei tabelle2.csv


Alternative zum CSV-Format mit Kommatrennung ist das tsv-Format mit Tab-Trennung.