clojure如何知道一个项目中文件夹/文件/目录的路径?
假设我的clojure项目中有两个文件,一个是clj,另一个是txt。 有没有办法从clj文件中知道txt文件的路径(作为字符串) 有:clojure如何知道一个项目中文件夹/文件/目录的路径?,clojure,functional-programming,Clojure,Functional Programming,假设我的clojure项目中有两个文件,一个是clj,另一个是txt。 有没有办法从clj文件中知道txt文件的路径(作为字符串) 有: (System/getProperty "user.dir") 或 但这给出了当前目录的位置。包含clj文件的文件,即编写代码的文件。 但是如何知道txt文件的路径呢? 目的是从clj文件写入此txt文件 多谢各位 这给出了当前clj文件所在的位置,即该代码所在的位置 写在 不,没有。 它给出了当前目录 您是否考虑到可以运行不在当前目录中的clojure脚
(System/getProperty "user.dir")
或
但这给出了当前目录的位置。包含clj文件的文件,即编写代码的文件。
但是如何知道txt文件的路径呢?
目的是从clj文件写入此txt文件
多谢各位
这给出了当前clj文件所在的位置,即该代码所在的位置
写在
不,没有。
它给出了当前目录
您是否考虑到可以运行不在当前目录中的clojure脚本?在Java中,因此clojure可以在类路径上找到文件。例如,在Java中,通常会将log4j.properties之类的内容放在类路径的顶部(例如,在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")
Clojure库允许您使用
本地文件/project dir
获取当前项目的目录。只要您知道要访问的文件在项目中的位置,就应该能够通过这种方式找到它。如果您的文件结构与此类似:
配置| src |目标|测试
您在config目录中有一个config,在我们的例子中,假设它是java.config,您试图在src目录中的core.clj中读取该文件,您也可以使用clojure.java.io/reader方法
例如:
(clojure.java.io/reader "config/java.config")
您可以在repl中运行以下命令以查看文件的内容
(slurp (clojure.java.io/reader "config/java.config")
如果您对逐行读取文件内容感兴趣,请将上述功能与open方法相结合,逐行读取:
(with-open [word (clojure.java.io/reader "config/java.config")]
(loop [c (.read word)]
(if (not= c -1)
(do
(print (char c))
(recur (.read word))))))
您好,您是对的,但是如何知道项目文件夹中空txt文件的路径,或者如何在项目文件夹中创建新的txt文件。在任何一种情况下,都需要以字符串形式显示该txt文件的路径。所有这些都需要是clojure文件中的代码。如果您不需要项目,而只需要clojure文件,请安装最新的clojure 1.9,其中包含clj实用程序,并按照说明进行操作:您好,可以演示吗?需要的只是项目目录中txt文件的字符串路径。(使用此路径是从clj文件写入此txt文件)。谢谢。嗨,我没有使用Leiningen,只是使用clojure项目。需要的只是项目目录中txt文件的字符串路径。(使用此路径是从clj文件写入此txt文件)。谢谢。
(with-open [word (clojure.java.io/reader "config/java.config")]
(loop [c (.read word)]
(if (not= c -1)
(do
(print (char c))
(recur (.read word))))))