2010-07-06 2 views
6

Clojure에서 java 함수를 호출하여 파일 목록을 가져온다.Clojure의 java.io.File.listFiles에서 반환 된 값을 제거하는 방법

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

그리고 나는 내가 괄호 제거하고 그래서 다른 함수가 액세스 할 수있는 배열의 형태에 넣어합니까 방법 등이

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

같은 문자열의 전체 무리를 얻을?

답변

7

이러한 문자열은 Java File 개체의 인쇄 형식 일뿐입니다.

조작이 가능한 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 함수로 전달할 수 있습니다.

+0

File 객체를 다음과 같이 slurp로 전달할 수 있습니까? (slurp (first (.listFiles (io/file "/ home/loluser/loldir")))))))) var에 먼저 넣은 다음 slurp var? – bleakgadfly

+0

예. listFiles가 파일과 디렉토리를 모두 반환하기 때문에 # (.isFile %)로 먼저 필터링해야합니다. –

+0

참고로, 맹 글링 된 구문 강조 표시에 유의하십시오. – Svante

관련 문제