首页 / JAVA / java IO流复制图片
java IO流复制图片
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java IO流复制图片,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2212字,纯文字阅读大概需要4分钟。
内容图文
![java IO流复制图片](/upload/InfoBanner/zyjiaocheng/1077/9bdbbb5368ac4cebab6d59404a21fe34.jpg)
一.使用字节流复制图片
//字节流方法 public static void copyFile()throws IOException { //1.获取目标路径 //(1)可以通过字符串 // String srcPath = "E://11.jpg"; // String destPath = "E://22.jpg"; //(2)通过文件类 File srcPath = new File("E://11.jpg"); File destPath = new File("E://22.jpg"); //2.创建通道,依次 打开输入流,输出流 FileInputStream fis = new FileInputStream(srcPath); FileOutputStream fos = new FileOutputStream(destPath); byte[] bt = new byte[1024]; //3.读取和写入信息(边读取边写入) while (fis.read(bt) != -1) {//读取 fos.write(bt);//写入 } //4.依次 关闭流(先开后关,后开先关) fos.close(); fis.close(); }
二.使用字符流复制图片
//字符流方法,写入的数据会有丢失 public static void copyFileChar()throws IOException { //获取目标路径 File srcPath = new File("E://11.jpg");
File destPath = new File("E://22.jpg"); //创建通道,依次 打开输入流,输出流 FileReader frd = new FileReader(srcPath); FileWriter fwt = new FileWriter(destPath); char[] ch = new char[1024]; int length = 0; // 读取和写入信息(边读取边写入) while ((length = frd.read(ch)) != -1) {//读取 fwt.write(ch,0,length);//写入 fwt.flush(); } // 依次 关闭流(先开后关,后开先关) frd.close(); fwt.close(); }
三.复制图片过程中的异常处理
//以复制图片为例,实现try{ }cater{ }finally{ } 的使用 public static void test(){ //1.获取目标路径 File srcPath = new File("E://11.jpg");
File destPath = new File("E://11.jpg");
//2.创建通道,先赋空值 FileInputStream fis = null; FileOutputStream fos = null; //3.创建通道时需要抛出异常 try { fis = new FileInputStream(srcPath); fos = new FileOutputStream(destPath); byte[] bt = new byte[1024]; //4.读取和写入数据时需要抛出异常 try { while(fis.read(bt) != -1){ fos.write(bt); } } catch (Exception e) { System.out.println("储存盘异常,请修理"); throw new RuntimeException(e); } } catch (FileNotFoundException e) { System.out.println("资源文件不存在"); throw new RuntimeException(e); }finally{
//5.无论有无异常,需要关闭资源(分别抛出异常) try { fos.close(); } catch (Exception e) { System.out.println("资源文件或目标文件关闭失败!"); throw new RuntimeException(e); }
try { fis.close(); } catch (IOException e) { System.out.println("资源文件或目标文件关闭失败!"); throw new RuntimeException(e); } } }
字符流 = 字节流 + 解码 --->找对应的码表 GBK 字符流解码 : 拿到系统默认的编码方式来解码 将图片中的二进制数据和GBK码表中的值进行对比, 对比的时候会出现二进制文件在码表中找不对应的值,他会将二进制数据标记为未知字符,当我在写入数据的是后会将未知的字符丢掉。所以会造成图片拷贝不成功(丢失数据) 疑问:何时使用字节流?何时使用字符流? 使用字节流的场景:读写的数据不需要转为我能够看得懂的字符。比如:图片,视频,音频... 使用字符流的场景 :如果读写的是字符数据。 |
原文:http://www.cnblogs.com/houjiie/p/6181839.html
内容总结
以上是互联网集市为您收集整理的java IO流复制图片全部内容,希望文章能够帮你解决java IO流复制图片所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。