Clojure:
Writing a text file

How to:

Writing text to a file using Clojure’s built-in functions

The spit function is the simplest way to write text to a file in Clojure. It takes two arguments: the file path and the string to write. If the file doesn’t exist, spit will create it. If it does, spit will overwrite it.

(spit "example.txt" "Hello, world!")

To append text to an existing file, you can use the spit function with the :append option.

(spit "example.txt" "\nLet's add this new line." :append true)

After running these snippets, “example.txt” will contain:

Hello, world!
Let's add this new line.

Using third-party libraries

While Clojure’s built-in capabilities are often sufficient, the community has developed robust libraries for more complex or specific tasks. For file I/O, one popular library is clojure.java.io, which provides a more Java-like approach to file handling.

To use clojure.java.io for writing to a file, you first need to import it:

(require '[clojure.java.io :as io])

Then, you can use the writer function to obtain a writer object, and the spit function (or others like print, println) to write to the file:

(with-open [w (io/writer "example_with_io.txt")]
  (.write w "This is written using clojure.java.io"))

This will create (or overwrite if it already exists) “example_with_io.txt” with the text:

This is written using clojure.java.io

Remember: with-open ensures that the file is properly closed after writing, avoiding potential resource leaks.