我正在使用 clojure.java.shell 命令中的 sh 函数来读取命令的非常大的输出。输出大约是 60meg 的数据。
我不断收到 java.lang.OutOfMemoryError。有没有办法打开一种管道,让我读取输出并将其解析为 vector 。就像命令输出的惰性序列一样?
基本上,数据是一个大字节数组,我想将其转换为数字并放入向量中。
最佳答案
clojure.java.shell/sh 将始终返回一个非惰性字符串
在 BufferedReader 上使用惰性行序列的解决方案(不处理关闭、环境传递和编码):
(->> (.exec (Runtime/getRuntime) "YOUR_LONG_RUNNING_COMMAND ARG ...")
.getInputStream
clojure.java.io/reader
line-seq
(map YOUR-FUNCTION))
关于clojure - 使用 clojure 读取大型命令输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4071343/