如何获取从java.io.OutputStream中的exec调用返回的字符串

时间:2015-09-06 11:29:38

标签: clojure

我有这个:

(import 'java.lang.Runtime)

(defn foo []
    (println (.getOutputStream (. (Runtime/getRuntime) exec "pwd"))))

它成功返回一个java.io.OutputStream(这里的java文档:http://docs.oracle.com/javase/1.5.0/docs/api/java/io/OutputStream.html

我现在如何使用clojure / java interop编写此流?我想得到一个'pwd'命令的字符串。

由于

3 个答案:

答案 0 :(得分:1)

您可以使用slurp。此外,您必须使用getInputStream而不是getOutputStream方法(您希望使用进程的输入流)。这段代码应该有效:

(println (slurp (.getInputStream (.exec (Runtime/getRuntime) "pwd"))))

答案 1 :(得分:1)

这不是问题的直接答案,但认为对其他人提及https://clojuredocs.org/clojure.java.shell/sh在这种情况下也会有所帮助可能会有所帮助。

答案 2 :(得分:0)

这可能不是获取当前工作目录的最佳方式。 看看这里:Getting the Current Working Directory in Java