2013-02-24 15 views
8

Załóżmy, że jest dwa pliki wewnątrz mojego projektu Clojure, jeden CLJ a druga jest txt. Czy istnieje sposób na poznanie ścieżki (w postaci łańcucha) pliku txt z pliku clj?clojure jak poznać ścieżkę folderu/pliku/katalogu w jednym projekcie?

Jest:

(System/getProperty "user.dir") 

lub

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

Ale to daje gdzie aktualny katalog. Ten, który zawiera plik clj, ten, w którym zapisano kod. Ale jak poznać ścieżkę do pliku txt? Celem jest wpisanie do tego pliku txt z pliku clj.

Dziękuję.

Odpowiedz

7

w Javie i dlatego Clojure można znaleźć pliki na CLASSPATH. Na przykład w Javie często umieszcza się rzeczy takie jak log4j.properties na górze twojego CLASSPATH (np. W katalogu klas), a następnie możesz odwoływać się do pliku w twoim kodzie Clojure (lub Java) za pomocą:

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

używasz i uruchamianie aplikacji z Leiningen? Jeśli tak, możesz utworzyć katalog na najwyższym poziomie i umieścić tam pliki. Na przykład, jeśli masz plik konfiguracyjny można mieć „conf” dir z właściwości pliki:

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

Załóżmy umieścić plik myproj.conf w katalogu conf i chcesz zapoznać się z niego w swojej Kod Clojure. Następnie można po prostu zrobić:

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

Witam, nie używam Leiningen , tylko projekt clojure. potrzeba tylko ścieżki jako łańcucha do pliku txt w katalogu projektu. (użycie tej ścieżki polega na zapisaniu do tego pliku txt z pliku clj). Dziękuję. –

1

Daje gdzie obecny plik CLJ, jedno, że ten kod jest napisany w .

Nie, tak nie jest. Daje bieżący katalog.

Brałeś pod uwagę, że można uruchamiać skrypty Clojure, które nie są w bieżącym katalogu?

+0

Cześć, tak masz rację, ale jak wiemy ścieżkę do pustego pliku txt w folderze projektu lub utworzyć nowy plik txt wewnątrz folderu projektu. W obu przypadkach potrzebna jest ścieżka do tego pliku txt w postaci ciągu. I wszystko musi być kodem w pliku clojure. –

+0

Jeśli nie potrzebujesz projektu, ale tylko plik clojure, zainstaluj najnowszą wersję Clojure 1.9, która ma narzędzie clj na pokładzie i postępuj zgodnie z instrukcjami: https://clojure.org/reference/deps_and_cli –

3

Clojure biblioteka local-file pozwala uzyskać katalogu bieżącym projekcie jest z local-file/project-dir. Tak długo, jak wiesz, gdzie w projekcie znajduje się plik, do którego chcesz uzyskać dostęp, powinieneś być w stanie go znaleźć w ten sposób.

+0

Witam, czy możesz wykazać? potrzeba jest tylko dla ścieżki jako ciągu do pliku txt w katalogu projektu. (użycie tej ścieżki polega na zapisaniu do tego pliku txt z pliku clj). Dziękuję. –

Powiązane problemy