使用终端连接两个文件并使用Clojure重定向输出

Cia*_*her 4 filesystems clojure command-line-interface

我正在尝试联系Clojure中的终端,将两个二进制文件连接在一起.

所以我想尝试做类似的事情: cat file1 file2 > target

我开始看海螺,但我似乎cat无法将输入视为文件路径而不是字符串,例如

(def files '["/tmp/file1" "/tmp/file2"])

(defn add-to-target [files target]
  (cat {:in files :out (java.io.File. target)}))

(add-to-target files "/tmp/target")
Run Code Online (Sandbox Code Playgroud)

写入/tmp/target文件的结果是:

/tmp/file1
/tmp/file2
Run Code Online (Sandbox Code Playgroud)

我很高兴尝试其他(也许更多Clojure惯用)方法来做到这一点.

提前致谢.

edb*_*ond 8

干得好:

(ns user
  (:require [clojure.java.io :as io]))

(defn catto [f1 f2 out]
  (with-open [o (io/output-stream out)]
    (io/copy (io/file f1) o)
    (io/copy (io/file f2) o)))

;; in REPL
;; > (catto "station.mov" "super.pdf" "zzz.bin")
Run Code Online (Sandbox Code Playgroud)

看看clojure.java.io docs.

  • 这适用于一个调整:`io/writer`需要为二进制数据的`io/output-stream`.也许你可以编辑?谢谢! (2认同)