2013-02-24 23 views
8

假設我的clojure項目中有兩個文件,一個是clj,另一個是txt。 有沒有辦法從clj文件中知道txt文件的路徑(作爲字符串)?clojure如何知道一個項目中的文件夾/文件/目錄的路徑?

有:

(System/getProperty "user.dir") 

(-> (java.io.File. ".") .getAbsolutePath) 

但是這給在當前目錄。包含clj文件的代碼被寫入其中。 但是如何知道txt文件的路徑? 目的是從clj文件寫入這個txt文件。

謝謝。

回答

7

在Java中,因此Clojure可以在CLASSPATH上找到文件。例如,在Java中,通常將諸如log4j.properties之類的東西放在CLASSPATH的頂部(例如,在classes目錄中),然後可以在Clojure(或Java)代碼中引用該文件:

(java.io.File. "log4j.properties") 

您是否正在Leiningen使用並運行您的應用程序?如果是這樣,您可以在頂層創建一個目錄並將文件放在那裏。舉例來說,如果你有一個配置文件,你可以有一個特性文件「CONF」導演:

my-lein-proj$ ls 
conf doc project.clj README.md src target test 

假設你把一個myproj.conf文件conf目錄,你想從它在讀你的Clojure代碼。然後,你可以這樣做:

(slurp "conf/myproj.conf") 
+0

嗨,我沒有使用Leiningen ,只是clojure項目。需要將路徑作爲項目目錄中的txt文件的字符串。 (使用這個路徑是從clj文件寫入這個txt文件)。謝謝。 – 2013-02-25 08:14:32

1

這使得在當前CLJ文件,一個是這個代碼寫在 。

不,不。 它給出當前目錄。

您是否考慮過可以運行不在當前目錄中的clojure腳本?

+0

嗨,是的你是對的,但如何知道項目文件夾中的空txt文件的路徑或在項目文件夾內創建一個新的txt文件。 無論在哪種情況下,都需要將此txt文件的路徑作爲字符串。 而且所有需要成爲clojure文件中的代碼。 – 2013-02-24 10:31:55

+0

如果你不需要一個項目,但只需要一個clojure文件,那麼安裝最新的Clojure 1.9,它具有clj實用程序並遵循以下說明:https://clojure.org/reference/deps_and_cli – 2018-01-30 08:08:10

3

Clojure的庫local-file允許您與local-file/project-dir讓你的當前項目的目錄。只要你知道你想要訪問的文件在你的項目中的哪個位置,你應該能夠以這種方式找到它。

+0

嗨,你可以證明一下嗎? 需要的僅僅是作爲項目目錄中的txt文件的字符串的路徑。 (使用這個路徑是從clj文件寫入這個txt文件)。謝謝。 – 2013-02-25 08:13:17

相關問題