3

(Clojure 新手)

在我的 linux 机器上,slurping/proc/cpuinfo会引发错误:

user=> (slurp "/proc/cpuinfo")
java.io.IOException: Invalid argument (NO_SOURCE_FILE:0)

有人知道这是为什么吗?(/proc 文件系统是 Java 中的某种二等公民吗?)

编辑:以下代码改编自 nakkaya.com,完美运行:

(with-open [rdr (java.io.BufferedReader. 
             (java.io.FileReader. "/proc/cpuinfo"))]
   (let [seq (line-seq rdr)]
   (apply print seq)))

我想知道为什么会有这种差异?

4

2 回答 2

5

我对 /proc 中的文件有类似的问题。解决方案很简单:

(slurp (java.io.FileReader. "/proc/cpuinfo"))
于 2012-01-20T05:06:30.923 回答
3

问题是 java 无法在 /proc 上打开 DataInputStream 所以 slurp 函数在这里对你没有帮助,对不起:(

/proc/cpuinfo 有点奇怪,因为它的文件大小为零,并且在读取时会产生字节。这会扰乱更智能的 java 文件处理类。

ls -l /proc/cpuinfo
-r--r--r-- 1 root root 0 2012-01-20 00:10 /proc/cpuinfo

看到这个线程更多http://www.velocityreviews.com/forums/t131093-java-cannot-access-proc-filesystem-on-linux.html

您将不得不使用 FileReader 打开它。稍后我将添加一个示例

于 2012-01-19T21:35:55.923 回答