Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例
2015-10-11 12:59
921 查看
1. 复制图片的 4 种方式案例:
分析:
复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流。
通过该原理,我们知道我们应该采用字节流。
而字节流有4种方式,所以做这个题目我们有4种方式。推荐掌握第4种。
数据源:
c:\\a.jpg -- FileInputStream -- BufferedInputStream
目的地:
d:\\b.jpg -- FileOutputStream -- BufferedOutputStream
2. [b]4 种方式代码示例:[/b]
分析:
复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流。
通过该原理,我们知道我们应该采用字节流。
而字节流有4种方式,所以做这个题目我们有4种方式。推荐掌握第4种。
数据源:
c:\\a.jpg -- FileInputStream -- BufferedInputStream
目的地:
d:\\b.jpg -- FileOutputStream -- BufferedOutputStream
2. [b]4 种方式代码示例:[/b]
package cn.itcast_01; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /* * 复制图片 * * 分析: * 复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流。 * 通过该原理,我们知道我们应该采用字节流。 * 而字节流有4种方式,所以做这个题目我们有4种方式。推荐掌握第4种。 * * 数据源: * c:\\a.jpg -- FileInputStream -- BufferedInputStream * 目的地: * d:\\b.jpg -- FileOutputStream -- BufferedOutputStream */ public class CopyImageDemo { public static void main(String[] args) throws IOException { // 使用字符串作为路径 // String srcString = "c:\\a.jpg"; // String destString = "d:\\b.jpg"; // 使用File对象做为参数 File srcFile = new File("c:\\a.jpg"); File destFile = new File("d:\\b.jpg"); // method1(srcFile, destFile); // method2(srcFile, destFile); // method3(srcFile, destFile); method4(srcFile, destFile); } // 字节缓冲流一次读写一个字节数组 private static void method4(File srcFile, File destFile) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream( srcFile)); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(destFile)); byte[] bys = new byte[1024]; int len = 0; while ((len = bis.read(bys)) != -1) { bos.write(bys, 0, len); } bos.close(); bis.close(); } // 字节缓冲流一次读写一个字节 private static void method3(File srcFile, File destFile) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream( srcFile)); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(destFile)); int by = 0; while ((by = bis.read()) != -1) { bos.write(by); } bos.close(); bis.close(); } // 基本字节流一次读写一个字节数组 private static void method2(File srcFile, File destFile) throws IOException { FileInputStream fis = new FileInputStream(srcFile); FileOutputStream fos = new FileOutputStream(destFile); byte[] bys = new byte[1024]; int len = 0; while ((len = fis.read(bys)) != -1) { fos.write(bys, 0, len); } fos.close(); fis.close(); } // 基本字节流一次读写一个字节 private static void method1(File srcFile, File destFile) throws IOException { FileInputStream fis = new FileInputStream(srcFile); FileOutputStream fos = new FileOutputStream(destFile); int by = 0; while ((by = fis.read()) != -1) { fos.write(by); } fos.close(); fis.close(); } }
相关文章推荐
- java中Math类与Random类的用法
- Java基础知识强化之IO流笔记43:IO流练习之 复制文本文件的 5 种方式案例
- Java 加解密技术系列之 SHA
- Java 加解密技术系列之 BASE64
- Eclipse正在使用Ant扑灭Android数据包错误的解决方案 – Perhaps JAVA_HOME does not point to the JDK
- Java加密解密技术系列之MD5
- java IO流学习总结
- 《编程简介(Java) ·10.3递归思想》
- Java语法糖2:自动装箱和自动拆箱
- eclipse中文乱码修改新方法,在修改了所有的utf-8都没有用就这样修改
- java 枚举
- Hadoop学问Eclipse构建Hadoop工程
- Java继承后子父类的初始化化问题
- java 格式判断
- JavaEE之JDBC编程[详解]
- Git使用教程3:MyEclipse+Egit+GitHub实现代码托管 【上】
- SVN太旧 svn: Working copy 'E:\JAVA\Workspaces\uhr' is too old (format 10,created by Subversion 1.6)
- Java语法糖1:可变长度参数以及foreach循环原理
- 浅谈Java中return和finally的问题
- SpringMvc学习笔记之1