【问题标题】:clojure how to know the path of a folder / file / directory in one project?clojure 如何知道一个项目中文件夹/文件/目录的路径?
【发布时间】:2013-02-09 14:50:17
【问题描述】:

假设我的 clojure 项目中有两个文件,一个是 clj,另一个是 txt。 有没有办法从clj文件中知道txt文件的路径(作为字符串)?

有:

(System/getProperty "user.dir") 

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

但这给出了当前目录的位置。包含 clj 文件的文件,即写入代码的文件。 但是怎么知道txt文件的路径呢? 目的是从clj文件写入到这个txt文件中。

谢谢。

【问题讨论】:

    标签: clojure functional-programming


    【解决方案1】:

    如果您的文件结构与此类似:

    配置 |源代码 |目标 |测试

    你在 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")
    

    如果你有兴趣逐行读取文件的内容,你可以将上述函数与 with-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))))))
    

    【讨论】:

      【解决方案2】:

      Clojure 库local-file 允许您使用local-file/project-dir 获取当前项目的目录。只要您知道要访问的文件在项目中的哪个位置,您应该可以通过这种方式找到它。

      【讨论】:

      • 嗨,你可以演示一下吗?只需要一个路径作为项目目录中 txt 文件的字符串。 (这个路径的使用是从clj文件写入这个txt文件)。谢谢。
      【解决方案3】:

      在 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")
      

      【讨论】:

      • 嗨,我没有使用 Leiningen,只是 clojure 项目。只需要一个路径作为项目目录中 txt 文件的字符串。 (这个路径的使用是从clj文件写入这个txt文件)。谢谢。
      【解决方案4】:

      这给出了当前 clj 文件的位置,即这段代码所在的位置 写的。

      不,它没有。 它给出了当前目录。

      您是否考虑到可以运行不在当前目录中的 clojure 脚本?

      【讨论】:

      • 嗨,你是对的,但是如何知道项目文件夹中空 txt 文件的路径或在项目文件夹中创建新的 txt 文件。无论哪种情况,都需要此 txt 文件的路径作为字符串。并且都需要是clojure文件中的代码。
      • 如果您不需要项目而只需要一个 clojure 文件,请安装具有 clj 实用程序的最新 Clojure 1.9 并按照说明操作:clojure.org/reference/deps_and_cli
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 2017-01-05
      相关资源
      最近更新 更多