slurping / proc / cpuinfo с clojure - PullRequest
       34

slurping / proc / cpuinfo с clojure

3 голосов
/ 20 января 2012

(Clojure newbie)

На моей машине 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)))

Интересно, почему эта разница?

Ответы [ 2 ]

5 голосов
/ 20 января 2012

У меня была похожая проблема с файлами в / proc. Решение простое, хотя:

(slurp (java.io.FileReader. "/proc/cpuinfo"))
3 голосов
/ 20 января 2012

проблема в том, что java не может открыть DataInputStream в / proc, поэтому функция 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. Я добавлю пример чуть-чуть

...