Thread CSV-Datei ohne Modul schreiben
(15 answers)
Opened by Stuermchen at 2011-07-12 09:07
Es gibt mehrere Möglichkeiten für den Zugriff auf Daten oder Felder in einer Datei. Einen echten Random Access bekommst Du mit einer linearen Adressierung, im Prinzip geht das so, dass es am Anfang das Datei oder auch außerhalb der Datei einen Adressblock gibt, in welchem die Zuordnung der Felder steht.
Einfacher jedoch ist ein sequentieller Zugriff. D.h., die Datei wird von Anfang bis Ende gelesen und auch wieder beschrieben. Du bekommst einen quasi Random Access über eine Datenstruktur, in welcher sich der Inhalt der Datei wiederfindet. Abstrakt gesehen, brauchen wir nun: - eine Funktion, die aus der Sequenz die Datenstruktur erzeugt - eine Funktion, die diese Datenstruktur in eine Sequenz umwandelt. Solche Funktionen werden i.d.R. Serialize() und Deserialize()-Funktionen genannt. Eine CSV-Datei besteht aus Zeilen und Spalten zum Strukturieren. Das passt gut in ein Array, ein Array mit Refrenzen [zeile][spalte]. Natürlich kann die Datenstruktur auch anders aufgebaut sein, z.B. ein Hash mit den Zeilennummern als Key und der Value ist jeweils eine Array-Referenz auf die jeweilige Zeile mit den Spalten als Index. Wenn ein Hash benutzt wird, ist die Frage nach der Sortierung von Interesse, zum Sparen von CPU kann innerhalb der Datei die Sortierung zufällig sein, sortiert wird nur für die Ausgabe nach Zeilennummern. Das wären ersteinmal die grundlegenden Überlegungen. Wenn die geklärt sind, gehts an das Schreiben einer Klasse. Damit hast Du im Code Deiner Anwendung kein IO-Geraffel, das steht dann alles in der Klasse, die zur Objekterstellung nur den Dateinamen bekommt und eine Datenstruktur zurückgibt. Also: Sequentieller Zugriff? Mach Dir Gedanken um die Datenstruktur ;) |