这篇文章主要介绍“Java如何实现图片的复制”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java如何实现图片的复制”文章能帮助大家解决问题。
public class TestBytesInputStream {public static void main(String[] args) {
//复制a.jpg图片byte[] datas=fileToBytesArray("D:\\a.jpg");byteArrayToFile(datas,"D:\\b.jpg");
}//1.图片读取到字节数组中// 1.图片到程序——FileInputStream// 2.程序到字节数组——byteArrayOutputStream public static byte[] fileToBytesArray(String path) {//创建源头与目的地 File src = new File(path);byte[] dest = null;//选择流 InputStream is = null;ByteArrayOutputStream baos = null;try {
//也可以使用 is = new BufferedInputStream(FileInputStream(src));
is = new FileInputStream(src);
//也可以使用baos = new BufferedOutputStream(teArrayOutputStream());
baos = new ByteArrayOutputStream();//3.分段读取 byte[] flush = new byte[1024 * 10];//缓冲容器 int len = -1;while ((len = is.read(flush)) != -1) {
baos.write(flush, 0, len);//写到字节数组中 }
baos.flush();return baos.toByteArray();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {try {if (null != is) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}return null;
}public static void byteArrayToFile(byte[]src,String path){File dest=new File(path);InputStream is=null;OutputStream os=null;try {
is = new ByteArrayInputStream(src);
os = new FileOutputStream(dest);byte[] flush = new byte[5];int len = -1;while ((len = is.read(flush)) != -1) {
os.write(flush, 0, len);
}
}catch (IOException e) {
e.printStackTrace();
} finally {try{if(os!=null){
os.close();
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
}
值得提醒的是,当is.read()没有传入参数的时候,复制的图片会无法打开,因为它只能一个字节一个字节地读,所以最好还是传入数组
提高性能的两个地方(1.缓冲容器的使用(相当于小卡车) 2.还可以使用字节缓冲流(相当于大卡车))
关于“Java如何实现图片的复制”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4583813/blog/4708021