Я новичок в Clojure.
У меня есть приложение Clojure, которое предоставляет каталог журналов для http / s.Но, к сожалению, в этом же каталоге есть и другие файлы.Мне нужно фильтровать файлы только с расширением .log *.
У нас был следующий код:
(defn get-dir-listing [dir]
(map #(get-all-attribs %) (fs/list-dir dir)))
(defn get-all-attribs [fpath]
{:type (if (fs/directory? fpath)
"Directory"
"File")
:name (.getName fpath)
:modtime (-> (fs/mod-time fpath)
time/from-long)
:size (-> (fs/size fpath)
get-size-in-KB)
})
Я изменил его на следующее:
(defn get-dir-listing [dir]
(map #(get-dirs-log-files-only %) (fs/list-dir dir)))
(defn get-dirs-log-files-only [fpath]
(if (and (not (fs/directory? fpath)) (.contains (.getName fpath) ".log"))
(get-all-attribs fpath)
(if (fs/directory? fpath)
(get-all-attribs fpath))))
(defn get-all-attribs [fpath]
{:type (if (fs/directory? fpath)
"Directory"
"File")
:name (.getName fpath)
:modtime (-> (fs/mod-time fpath)
time/from-long)
:size (-> (fs/size fpath)
get-size-in-KB)
})
;To remove nil
(remove nil? (get-dir-listing "C:\\tmp"))
У кого-нибудь есть лучший способ решить его?