Мне нужно записать необработанные байты в файл. Я делаю это с:
(.write (FileOutputStream "/path") bytes)
... где байты должны иметь тип byte []. Обратите внимание, что это не может быть Byte [].
Я попытался преобразовать свою последовательность с помощью функций (в байтах) и / или (в массив) и был разочарован, один пример:
user=> (bytes (into-array (filter #(not (= % 13)) (to-byte-array (File. "e:/vpn.bat")))))
java.lang.ClassCastException: [Ljava.lang.Byte; cannot be cast to [B (NO_SOURCE_FILE:0)
ПРОДОЛЖЕНИЕ:
массив с Byte / TYPE работает нормально. Однако, байтовый массив не имеет. Файл становится пустым:
(import 'FileOutputStream)
(use 'clojure.contrib.io)
(defn remove-cr-from-file [file]
(with-open [out (FileOutputStream. file)]
(let [dirty-bytes (to-byte-array file)
clean-seq (filter #(not (= 13 %)) dirty-bytes)
clean-bytes (byte-array clean-seq)]
(.write out clean-bytes))))