Java 利用字节流复制图片时出现的小问题!

Java 利用字节流复制图片时出现的小问题!,第1张

Java 利用字节流复制图片时出现的小问题!,第2张

部分代码: /获取当前工程下的 pic.jpg 文件/

file = new File("picture/pic.jpg"); /输出其大小/

System.out.println(file.length()); /将文件利用 FileInputStream 读入到内存/ fis = new FileInputStream(file);

File cp_file = new File("picture/cp_pic.jpg");

fos = new FileOutputStream(cp_file);

/封装到缓冲区/ bis = new BufferedInputStream(fis);

bos = new BufferedOutputStream(fos);

/字节数组存储信息/ byte[] bytes=new byte[1024];

int temp=0;

/判断是否读到文件结尾/

while((temp=bis.read(bytes))!=-1){ //重复读取完成后利用输出流输出 bos.write(bytes); }

/复制完之后的文件路径及大小/ System.out.println(cp_file.getAbsolutePath()); System.out.println(cp_file.length());

当我把 byte[] bytes=new byte[1024]更改成为 byte[] bytes=new byte[4800]; 或者更高时,复制的图片字节数发生改变。但是图片没有看出失真的现象。 那么当我设置存储数组的值越低时,是否零存储越低,但不会失真。 请教这种说法对么?还是我的想法本来就是错误的?

----------------------- 以下是精选回复-----------------------

答:你没有 close bufferedwriter

讲道理俩文件对拷不需要 buffered
答:楼主还是得好好学下 Java 基础. bos.write(bytes);在最后一次读取文件时,有效长度是 500,数组长度是 4800,而你把整个数组写进去文件了,后面的是无效数据.应该这么写 bos.write(bs,0,temp);
答:为何不用 nio 的复制呢?
答:赞成 2 楼,写数据的话,如果有效数据小于数组长度,会把数组后面空的数据写进去,所以长度有所不同,用带 offset 的方法进行控制,只写入有效长度
答:transfer
答:2 楼明显正解。。。应该是 fos.write(bytes,0,temp)
答:回炉深造

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Java 利用字节流复制图片时出现的小问题!

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情