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中复制图片_2017.5.3 java中 复制图片的4种方式(copy图片只能用字节流对象)...相关推荐

  1. java 设置session超时_Java设置session超时(失效)的三种方式

    转自:http://blog.csdn.net/hu_shengyang/article/details/8021435 1.      在web容器中设置(此处以tomcat为例) 在tomcat- ...

  2. java并发编程基础系列(五): 创建线程的四种方式

    线程的创建一共有四种方式: 继承于Thread类,重写run()方法: 实现Runable接口,实现里面的run()方法: 使用 FutureTask 实现有返回结果的线程 使用ExecutorSer ...

  3. springboot Java实现多文件的zip压缩操作 + 通过浏览器下载文件的两种方式

    注只适配utf-8的场景,待完善! 压缩为zip文件 通过java程序输出文件 /*** 功能:压缩多个文件成一个zip文件* @param srcfile:源文件列表* @param zipfile ...

  4. java websocket注解_【websocket】spring boot 集成 websocket 的四种方式

    集成 websocket 的四种方案 1. 原生注解 pom.xml org.springframework.boot spring-boot-starter-websocket WebSocketC ...

  5. java applet怎么运行_Java如何运行Applet?运行Applet的两种方式

    详细内容 applet是一个小型的动态Java程序,那么如何运行Applet?本篇文章就给大家介绍Applet,让大家了解Applet是什么,运行Applet的方法,希望对你们有所帮助. Java a ...

  6. java匿名启动线程_使用匿名内部类:来创建线程的两种方式

    [Java]基础31:创建线程的两种方式 谢谢你的观看. 今天是我自学Java的第31天. 你的观看便是对我最大的鼓励. 话不多说,开始今天的学习: 线程的创建有两种方式,昨天学习过其中的一种: 创建 ...

  7. java oom dump_JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  8. java分页抓取数据_网页分页数据抓取的几种方式

    相信所有个人网站的站长都有抓取别人数据的经历吧,目前抓取别人网站数据的方式无非两种方式: 一.使用第三方工具,其中最著名的是火车头采集器,在此不做介绍. 二.自己写程序抓取,这种方式要求站长自己写程序 ...

  9. 【手把手教】Android开发两种方式实现图片的上传下载

    Android 图片上传的应用场景 在Android开发中,很多时候我们需要进行图片,文件的上传下载,最直接的一个应用场景就是用户头像的保存与切换,以及像即时通讯中的图片发送等任何在App中设计图片的 ...

  10. 抖音短视频APP开发通过三种方式绘制图片

    (一)ImageView绘制图片 (1)将图片分别放入mipmap-hdpi.assets (2)布局文件: <?xml version="1.0" encoding=&qu ...

最新文章

  1. eplan文本怎么换行_EPLAN几个使用的小技巧,非常有用
  2. P2P最易遭受的DDoS***以及防御手段
  3. Swagger3.0新版带来的新变化
  4. c++自带的可持久化平衡树?rope大法好!(超详细解答 + 5道例题讲解,可直接替代可持久化的线段树、并查集、平衡树!)
  5. 语义分割--Dilated Residual Networks 之转载
  6. 福利 | 2022全球敏捷运维峰会:跟技术老将畅聊时下数据库、运维、金融科技应“云”而生的技术创新...
  7. 【Science】CMU机器学习系主任:八个关键标准判别深度学习任务成功与否
  8. DataWorks 安装手册
  9. IDOC 创建,增强,管理,配置
  10. 特奇怪的问题:centos5下mount.cifs 与apache2.2.3和vsftpd结合
  11. Winform中实现ZedGraph的多条Y轴(附源码下载)
  12. Struts1工作原理
  13. linux安装多路径报错,Linux操作系统配置多路径通用教程(适用于(RHEL,CentOS,SuSE等)...
  14. 企业主机安全面临的三大风险如何解?
  15. 泡泡提示加强版 完美支持XHTML(JavaScript)--zhuan
  16. C++:求第k小的数
  17. 21 个 curl 命令练习 | Linux 中国
  18. 【NOIP2013】【Luogu1983】车站分级(建图,拓扑排序)
  19. 2020 年百度之星#183;程序设计大赛 - 初赛三
  20. Spring Kafka 之 @KafkaListener 单条或批量处理消息

热门文章

  1. Spring中为什么实体类不用注入
  2. iOS通过CIFilter对图像进行滤镜处理
  3. JQuery each详细用法
  4. HTML5学习笔记简明版(1):HTML5介绍与语法
  5. session的保存方式.
  6. Spring IOC源码笔记(三)
  7. ScheduledThreadPoolExecutor部分源码学习
  8. thymeleaf使用总结
  9. 深入了解Spring的@Scope注解中作用域代理proxyMode属性的实现
  10. SSM-SpringMVC-15:SpringMVC中小论注解式开发之通配符篇