请在 2024 年 Clojure 状态调查!分享您的想法。

欢迎!请参阅 关于 页面以了解更多有关该工具的信息。

0
IO

大家好,我正在尝试从连接到我的桌面的设备(PS4 控制器,/dev/input/js0)读取和输出数据。我希望像使用 `cat /dev/input/js0` 一样,显示传入的数据。

这是我使用的代码,但它似乎只在点击按钮多次后才会打印出来。

(with-open [r (clojure.java.io/input-stream "/dev/input/js0")]
  (loop [c (.read r)]
    (print c)
    (recur (.read r))))

当使用 `cat /dev/input/js0` 命令时,当我点击控制器上的按钮时,我能立即看到输出,这正是我希望做到的。

有人知道我如何能以数据传入的方式获取数据?我做错了什么?

2 个答案

0
 
最佳答案

我已经找到问题。是使用 print,它不会自动刷新输出。一旦我切换到使用 println,它会刷新输出,我就能够以数据传入的方式打印数据。

0

clojure.java.io/input-stream 默认返回一个 java.io.BufferedInputStream,这可能是导致您看不到输入的延迟原因。

感谢回复。最初我也这么想,但问题实际上出在`print`和它没有刷新输出。
...