Clojure:
Een tekstbestand lezen

Hoe te:

;; Lees het hele bestand als een string
(slurp "voorbeeld.txt")

;; Uitvoer: "Hallo, dit is de inhoud van uw bestand!"

;; Lees bestand regel voor regel
(with-open [lezer (clojure.java.io/reader "voorbeeld.txt")]
  (doseq [regel (line-seq lezer)]
    (println regel)))

;; Uitvoer:
;; Hallo,
;; dit is uw
;; bestandsinhoud!

Diepgaande Duik

Traditioneel was het lezen van bestanden in programmeertalen een langdradige taak met veel stappen om fouten en bronnen te beheren. In Clojure profiteert u van de slurp functie, een elegante one-liner om de hele inhoud van het bestand te grijpen. Voor regel-voor-regel lezen zorgt line-seq in combinatie met with-open voor efficiënte en veilige bestandshandling. Het is ook vermeldenswaard dat, hoewel slurp handig is, het niet ideaal is voor grote bestanden vanwege geheugenbeperkingen. Dat is wanneer line-seq schittert, omdat het het bestand lui leest, één regel tegelijk.

Alternatieven voor het lezen van bestanden in Clojure omvatten het gebruik van de clojure.java.io/file met functies zoals reader en constructies zoals with-open om de bestandshendel handmatig te beheren. De afweging hier is tussen gebruiksgemak (slurp) en fijnmazige controle gecombineerd met veiligheid van bronnen (with-open en reader).

Implementatiegewijs is Clojure’s aanpak gegrond in Java’s IO-klassen, daarom, wanneer u met bestanden in Clojure werkt, heeft u te maken met Java’s volwassen, goed geteste bibliotheken, verpakt in een functioneel idioom. Houd altijd een oogje op bronnen: open bestanden verbruiken hendels en geheugen, dus nette bestandshandling is een nette gewoonte.

Zie Ook