Способ удалить возвращаемые значения из java.io.File.listFiles в Clojure - PullRequest
6 голосов
/ 07 июля 2010

Я вызываю Java-функцию в Clojure, чтобы получить список файлов.

(require '[clojure.java.io :as io])
(str (.listFiles (io/file "/home/loluser/loldir")))

И я получаю целую кучу строк, подобных этим

#<File /home/loluser/loldir/lolfile1>

и т.д.. Как мне избавиться от скобок и поместить их в какой-либо массив, чтобы другая функция могла получить к нему доступ?

1 Ответ

7 голосов
/ 07 июля 2010

Эти строки являются просто форматом печати для объекта Java File.

См. Файл javadoc , для которого доступны операции.

Если вы хотите, чтобы пути к файлам были строками, это было бы что-то вроде

(map #(.getPath %) 
  (.listFiles (io/file "/home/loluser/loldir")))

Или вы можете просто использовать list, который возвращает строки в первую очередь:

(.list (io/file "/home/loluser/loldir"))

Если вы хотите прочитать файл, вы можете оставить его в качестве объекта File для передачи в ядро ​​slurp или другого clojure.java.io или clojure.contrib.duck-streams функции.

...