kramann.info
© Guido Kramann

Login: Passwort:










6.1 Dateioperationen bei Processing

6.1 File operations in Processing (EN google-translate)

6.1 Operacje na plikach w przetwarzaniu (PL google-translate)

String-Zeilen speichern und einlesen

Save and read string lines

Zapisz i przeczytaj linie tekstowe

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.

The storage location is by default the folder in which the currently running sketch is stored. It is al possible to specify absolute paths.

Miejscem przechowywania jest domyślnie folder, w którym znajduje się aktualnie uruchomiony szkic jest zapisany. To też je możliwe określenie ścieżek bezwzględnych.

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 6.1-1: Beispiel

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

Code 6.1-2: Konsolenausgabe

split() - Strings zerlegen

split () - decompose strings

split () - dekomponuj łańcuchy

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 6.1-3: Beispiel

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

Code 6.1-4: Konsolenausgabe

splitTokens() - Strings zerlegen

splitTokens () - parse strings

splitTokens () - parsowanie ciągów

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:

The split method is a bit prone to error when switching between operating systems. More secure is a splitTokens () method that checks for white spaces between the words and then decomposes them. This is implemented as follows:

Metoda podziału jest nieco podatna na błędy podczas przełączania między systemami operacyjnymi. Bardziej bezpieczne jest metoda splitTokens (), która sprawdza białe spacje między słowami, a następnie je rozkłada. Jest to realizowane w następujący sposób:

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 6.1-5: Beispiel

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

Code 6.1-6: Konsolenausgabe

Zahlen-Arrays mit Hilfe der Table-Methode speichern und laden

Save and load number arrays using the Table method

Zapisz i wczytaj tablice liczb za pomocą metody Tabela

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 6.1-7: Beispiel

2 Tabellenspalten
1.0 2.0 
3.0 4.0 

Code 6.1-8: Konsolenausgabe

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

Code 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.

table.csv was previously copied to / mnt-system / soja / htdocs and the local server started.

table.csv został wcześniej skopiowany do / mnt-system / soja / htdocs i uruchomiono serwer lokalny.

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 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 6.1-11: Konsolenausgabe

Tabellen und Strings (Beispiel aus Processing-Reference)

Tables and Strings (example from Processing-Reference)

Tabele i łańcuchy znaków (przykład z 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 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 6.1-13: Konsolenausgabe

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

Code 6.1-14: Datei tabelle2.csv


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