黑马程序员技术交流社区

标题: 自己总结的IO流复制图片的4种方式!!! [打印本页]

作者: abc784990536    时间: 2015-1-8 11:36
标题: 自己总结的IO流复制图片的4种方式!!!

复习中,准备申请入学考试,自己总结的IO流复制图片的4种方式!!!
  1. package IO;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;

  8. /*
  9. * 复制图片
  10. *
  11. * 分析:
  12. *                 复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流。
  13. *                 通过该原理,我们知道我们应该采用字节流。
  14. *                 而字节流有4种方式,所以做这个题目我们有4种方式。推荐掌握第4种。
  15. *
  16. * 数据源:
  17. *                 c:\\a.jpg -- FileInputStream -- BufferedInputStream
  18. * 目的地:
  19. *                 d:\\b.jpg -- FileOutputStream -- BufferedOutputStream
  20. */
  21. public class CopyImageDemo {
  22.         public static void main(String[] args) throws IOException {
  23.                 // 使用字符串作为路径
  24.                 // String srcString = "c:\\a.jpg";
  25.                 // String destString = "d:\\b.jpg";
  26.                 // 使用File对象做为参数
  27.                 File srcFile = new File("c:\\a.jpg");
  28.                 File destFile = new File("d:\\b.jpg");

  29.                 // method1(srcFile, destFile);
  30.                 // method2(srcFile, destFile);
  31.                 // method3(srcFile, destFile);
  32.                 method4(srcFile, destFile);
  33.         }

  34.         // 字节缓冲流一次读写一个字节数组
  35.         private static void method4(File srcFile, File destFile) throws IOException {
  36.                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
  37.                                 srcFile));
  38.                 BufferedOutputStream bos = new BufferedOutputStream(
  39.                                 new FileOutputStream(destFile));

  40.                 byte[] bys = new byte[1024];
  41.                 int len = 0;
  42.                 while ((len = bis.read(bys)) != -1) {
  43.                         bos.write(bys, 0, len);
  44.                 }

  45.                 bos.close();
  46.                 bis.close();
  47.         }

  48.         // 字节缓冲流一次读写一个字节
  49.         private static void method3(File srcFile, File destFile) throws IOException {
  50.                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
  51.                                 srcFile));
  52.                 BufferedOutputStream bos = new BufferedOutputStream(
  53.                                 new FileOutputStream(destFile));

  54.                 int by = 0;
  55.                 while ((by = bis.read()) != -1) {
  56.                         bos.write(by);
  57.                 }

  58.                 bos.close();
  59.                 bis.close();
  60.         }

  61.         // 基本字节流一次读写一个字节数组
  62.         private static void method2(File srcFile, File destFile) throws IOException {
  63.                 FileInputStream fis = new FileInputStream(srcFile);
  64.                 FileOutputStream fos = new FileOutputStream(destFile);

  65.                 byte[] bys = new byte[1024];
  66.                 int len = 0;
  67.                 while ((len = fis.read(bys)) != -1) {
  68.                         fos.write(bys, 0, len);
  69.                 }

  70.                 fos.close();
  71.                 fis.close();
  72.         }

  73.         // 基本字节流一次读写一个字节
  74.         private static void method1(File srcFile, File destFile) throws IOException {
  75.                 FileInputStream fis = new FileInputStream(srcFile);
  76.                 FileOutputStream fos = new FileOutputStream(destFile);

  77.                 int by = 0;
  78.                 while ((by = fis.read()) != -1) {
  79.                         fos.write(by);
  80.                 }

  81.                 fos.close();
  82.                 fis.close();
  83.         }
  84. }
复制代码




作者: 446111220    时间: 2015-1-8 14:15
不是用字节缓冲流最好么?
作者: jant60    时间: 2015-1-8 14:18
刚才我发了一个,竟然没注释,被人举报了一次,吓死我了,赶紧去加上去了
作者: abc784990536    时间: 2015-1-8 14:30
446111220 发表于 2015-1-8 14:15
不是用字节缓冲流最好么?

对呀,第四种
作者: 446111220    时间: 2015-1-8 14:37
abc784990536 发表于 2015-1-8 14:30
对呀,第四种

可是我记得毕老师讲的是BufferedInputstream吧    难道是我记错了?
作者: Gonnaloveu    时间: 2015-1-8 14:52
就改了个包名...为了技术分也是蛮拼的..顶一下吧..
作者: 周景新    时间: 2015-1-8 14:54
总结得不错,学习了。。。
作者: 银离子    时间: 2015-1-8 18:39
学习了。谢谢
作者: qq306149769    时间: 2015-1-8 18:51
哎,眼睛痛!
作者: 探寻者    时间: 2015-1-8 19:26
正在看流的读写,楼主发的好些还没看到呢,参考一下了
作者: 彭学伟    时间: 2015-1-8 20:26
感谢分享
作者: 随影    时间: 2015-1-9 08:16
学习了。谢谢
作者: 飘零宾    时间: 2015-1-9 08:33
支持一下吧
作者: suihs11    时间: 2015-1-9 12:02
先收藏,还没学到呢
作者: abc784990536    时间: 2015-1-9 12:02
446111220 发表于 2015-1-8 14:37
可是我记得毕老师讲的是BufferedInputstream吧    难道是我记错了?

对呀,方法4不是指第四种,你看方法名method4
作者: 老外    时间: 2015-1-9 13:31
赞一个!

作者: 李增宽    时间: 2015-1-9 23:36
受教了,不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2