2013-02-24 5 views
8

Angenommen, es gibt zwei Dateien in meinem Clojure-Projekt, ein clj und der andere ist txt. Gibt es eine Möglichkeit, den Pfad (als String) der TXT-Datei aus der CLJ-Datei zu kennen?clojure Wie kann ich den Pfad eines Verzeichnisses/Datei/Verzeichnisses in einem Projekt erkennen?

Es gibt:

(System/getProperty "user.dir") 

oder

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

Aber das gibt, wo das aktuelle Verzeichnis. Der eine, der die clj-Datei enthält, in der der Code geschrieben ist. Aber wie kann man den Pfad der txt-Datei erkennen? Der Zweck ist, in diese TXT-Datei aus der CLJ-Datei zu schreiben.

Vielen Dank.

Antwort

7

In Java und daher Clojure können Sie Dateien auf dem CLASSPATH finden. Zum Beispiel ist es in Java üblich, Dinge wie log4j.properties oben in Ihrem CLASSPATH zu platzieren (zB im Verzeichnis classes) und dann können Sie die Datei in Ihrem Clojure- (oder Java-) Code wie folgt referenzieren:

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

Verwenden und betreiben Sie Ihre App mit Leiningen? Wenn dies der Fall ist, können Sie ein Verzeichnis auf oberster Ebene erstellen und Dateien dort ablegen. Zum Beispiel, wenn Sie eine Konfigurationsdatei haben, können Sie einen „conf“ dir mit Eigenschaften Dateien haben:

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

Angenommen, Sie eine myproj.conf Datei im conf Verzeichnis abgelegt und Sie mögen aus, es lesen in Ihrem Clojure-Code. Dann können Sie einfach tun:

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

Hallo, ich benutze nicht Leiningen , nur clojure Projekt. die Notwendigkeit besteht nur für einen Pfad als String zu einer TXT-Datei im Projektverzeichnis. (Die Verwendung dieses Pfades besteht darin, aus der CLJ-Datei in diese TXT-Datei zu schreiben.) Danke. –

1

Dies gibt, wo die aktuelle CLJ-Datei, die eine, die dieser Code in geschrieben ist.

Nein, es ist nicht der Fall ist. Es gibt das aktuelle Verzeichnis.

Haben Sie berücksichtigt, dass man Clojure-Skripte ausführen kann, die sich nicht im aktuellen Verzeichnis befinden?

+0

Hallo, ja du hast recht, aber wie man den Pfad zu einer leeren TXT-Datei im Projektordner kennt oder um eine neue TXT-Datei im Projektordner zu erstellen. In beiden Fällen wird der Pfad zu dieser TXT-Datei als Zeichenfolge benötigt. Und alle müssen ein Code in clojure Datei sein. –

+0

Wenn Sie kein Projekt, sondern nur eine Clojure-Datei benötigen, installieren Sie die neueste Clojure 1.9, die clj-Dienstprogramm an Bord hat und folgen Sie den Anweisungen: https://clojure.org/reference/deps_and_cli –

3

Die Clojure Bibliothek local-file können Sie Ihr aktuelles Projekt des Verzeichnisses mit local-file/project-dir bekommen. Solange Sie wissen, wo in Ihrem Projekt die Datei, auf die Sie zugreifen möchten, ist, sollten Sie sie auf diese Weise finden können.

+0

Hallo, darfst du demonstrieren? die Notwendigkeit ist nur für einen Pfad als String zu einer TXT-Datei im Projektverzeichnis. (Die Verwendung dieses Pfades besteht darin, aus der CLJ-Datei in diese TXT-Datei zu schreiben.) Danke. –

Verwandte Themen