Способ разделить возвращаемый значения от java.io. File.listFiles в Clojure

Я вызываю функцию Java в Clojure для получения списка файлов.

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

И я получаю целый набор строк как они

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

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

6
задан bleakgadfly 6 July 2010 в 20:27
поделиться

1 ответ

Эти строки представляют собой просто формат печати для объекта 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 .

7
ответ дан 17 December 2019 в 00:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: