首先write()是OutputStream也是子类FileOutputStream的方法,不是往buf里传数据的,而是往输出流写数据。你的数据是通过read()方法读到了底层内置的缓冲区。
bos.write(buf,0,len);,意为将buf数组中0角标位到len角标位的数据写入输出流,也就是你定义的“2.mp3”中。而buf数组你并没有输入数据。如果想输入数据,至少也应该定义read的重载方法“read(buf) ”,将数据定义到你自定义的数组中。
--------------------------------
至于:
读BufferedInputStream不用write(buf,0,len)而用write(len)是OK的,而用InputStream的时候用write(buf,0,len)是OK的,为何呢 ,仅仅是加入了一个缓冲区
说白了,在使用BufferedInputStream,BufferedOutputStream时,底层已经给你增加了缓冲功能,为什么还非得写到自己定义的数组里呢。
--------------------------------
语文不好,表述不清,怎么感觉越说越迷糊{:3_62:}
|