Arrays 将drakma http请求数组写入文件
我想做的是: 获取Arrays 将drakma http请求数组写入文件,arrays,stream,common-lisp,Arrays,Stream,Common Lisp,我想做的是: 获取(drakma:http请求“someURL.jpg”)的输出并将其写入文件。输出由一个字节数组组成 我想到的是: (with-open-file (my-stream "thing.jpg" :direction :output :element-type 'binary :if-does-not-exist :
(drakma:http请求“someURL.jpg”)
的输出并将其写入文件。输出由一个字节数组组成
我想到的是:
(with-open-file (my-stream "thing.jpg"
:direction :output
:element-type 'binary
:if-does-not-exist :create
:if-exists :supersede)
(let ((content (drakma:http-request "someURL.jpg")))
(loop for i across content do
(write-byte i my-stream))))
我得到的错误是:
debugger invoked on a SIMPLE-ERROR in thread #<THREAD "initial thread" RUNNING
{1002978FB1}>:
could not find any output routine for :FULL buffered BINARY
对线程中的简单错误调用的调试器#:
找不到:完全缓冲二进制文件的任何输出例程
我使用SBCL 1.0.49。
如果您想要任何其他信息或发现我的问题不清楚,请立即询问:)
编辑:
问题在于:元素类型,它应该是“无符号字节”。
您可以在下面的公共Lisp Hyper Spec中找到关于:元素类型的不同可能性的信息。除此之外,一切都是正确的
注:我无法回答,因为我的声誉太低。正如Xach所说,最好使用
'(无符号字节8)
(或者创建一个类型定义,例如(deftype binary()'(无符号字节8))
)
此外,您可能可以用调用写入序列来替换数组上的循环并逐字节写入,最好是(无符号字节8)
。