Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例

1. 复制图片的 4 种方式案例:

分析:

  复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流。

  通过该原理,我们知道我们应该采用字节流。

  而字节流有4种方式,所以做这个题目我们有4种方式。推荐掌握第4种。

数据源:

  c:\\a.jpg -- FileInputStream -- BufferedInputStream

目的地:

  d:\\b.jpg -- FileOutputStream -- BufferedOutputStream

2. 4 种方式代码示例:

 1 package cn.itcast_01;
 2
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.File;
 6 import java.io.FileInputStream;
 7 import java.io.FileOutputStream;
 8 import java.io.IOException;
 9
10 /*
11  * 复制图片
12  *
13  * 分析:
14  *         复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流。
15  *         通过该原理,我们知道我们应该采用字节流。
16  *         而字节流有4种方式,所以做这个题目我们有4种方式。推荐掌握第4种。
17  *
18  * 数据源:
19  *         c:\\a.jpg -- FileInputStream -- BufferedInputStream
20  * 目的地:
21  *         d:\\b.jpg -- FileOutputStream -- BufferedOutputStream
22  */
23 public class CopyImageDemo {
24     public static void main(String[] args) throws IOException {
25         // 使用字符串作为路径
26         // String srcString = "c:\\a.jpg";
27         // String destString = "d:\\b.jpg";
28         // 使用File对象做为参数
29         File srcFile = new File("c:\\a.jpg");
30         File destFile = new File("d:\\b.jpg");
31
32         // method1(srcFile, destFile);
33         // method2(srcFile, destFile);
34         // method3(srcFile, destFile);
35         method4(srcFile, destFile);
36     }
37
38     // 字节缓冲流一次读写一个字节数组
39     private static void method4(File srcFile, File destFile) throws IOException {
40         BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
41                 srcFile));
42         BufferedOutputStream bos = new BufferedOutputStream(
43                 new FileOutputStream(destFile));
44
45         byte[] bys = new byte[1024];
46         int len = 0;
47         while ((len = bis.read(bys)) != -1) {
48             bos.write(bys, 0, len);
49         }
50
51         bos.close();
52         bis.close();
53     }
54
55     // 字节缓冲流一次读写一个字节
56     private static void method3(File srcFile, File destFile) throws IOException {
57         BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
58                 srcFile));
59         BufferedOutputStream bos = new BufferedOutputStream(
60                 new FileOutputStream(destFile));
61
62         int by = 0;
63         while ((by = bis.read()) != -1) {
64             bos.write(by);
65         }
66
67         bos.close();
68         bis.close();
69     }
70
71     // 基本字节流一次读写一个字节数组
72     private static void method2(File srcFile, File destFile) throws IOException {
73         FileInputStream fis = new FileInputStream(srcFile);
74         FileOutputStream fos = new FileOutputStream(destFile);
75
76         byte[] bys = new byte[1024];
77         int len = 0;
78         while ((len = fis.read(bys)) != -1) {
79             fos.write(bys, 0, len);
80         }
81
82         fos.close();
83         fis.close();
84     }
85
86     // 基本字节流一次读写一个字节
87     private static void method1(File srcFile, File destFile) throws IOException {
88         FileInputStream fis = new FileInputStream(srcFile);
89         FileOutputStream fos = new FileOutputStream(destFile);
90
91         int by = 0;
92         while ((by = fis.read()) != -1) {
93             fos.write(by);
94         }
95
96         fos.close();
97         fis.close();
98     }
99 }
时间: 2024-10-18 19:37:54

Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例的相关文章

Java基础知识强化之网络编程笔记18:Android网络通信之 使用HttpClient的Post / Get 方式读取网络数据(基于HTTP通信技术)

使用HttpClient进行Get方式通信,通过HttpClient建立网络链接,使用HttpGet方法读取数据,并且通过Response获取Entity返回值. 使用HttpClient进行Post方式通信,通过HttpClient建立网络链接,使用HttpPost方法传出数据与读取数据,传出和传入的数据都是Entity的子类. 详见:Android(java)学习笔记211:采用httpclient提交数据(qq登录案例)

Java基础知识强化之集合框架笔记44:Set集合之TreeSet保证元素唯一性和自然排序的原理和图解

1. TreeSet保证元素唯一性和自然排序的原理和图解

Java基础知识强化之集合框架笔记43:Set集合之TreeSet存储Integer类型的元素并遍历

1. TreeSet类概述: • 能够对元素按照某种规则进行排序. • 或者根据创建set时提供的Comparator进行排序 • 具体取决于使用的构造方法 2. 代码示例: 1 package cn.itcast_05; 2 3 import java.util.TreeSet; 4 5 /* 6 * TreeSet:能够对元素按照某种规则进行排序. 7 * 排序有两种方式 8 * A:自然排序 9 * B:比较器排序 10 * 11 * TreeSet集合的特点:排序和唯一 12 * 13

Java基础知识强化之网络编程笔记13:TCP之TCP协议上传图片并给出反馈

1. TCP协议上传图片并给出反馈: (1)客户端: 1 package cn.itcast_13; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.FileInputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.net.Socket;

Java基础知识强化之网络编程笔记14:TCP之多个客户端上传到一个服务器的思考(多线程改进)

1. 多个客户端上传到一个服务器的思考 通过while循环可以改进一个服务器接收多个客户端. 但是这个是有问题的.如果是这种情况,假设我还有张三,李四,王五这三个人分别执行客户端  张三:好好学习.avi(100M) 256k  李四:天天向上.mp3(3M)   1M  王五:ILoveJava.txt(1k) 100M 这要等张三传完了,再去传李四…… 2. 使用多线程改进: (1)线程类UserThread: 1 package cn.itcast_15; 2 3 import java.

Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据

1. TCP协议发送数据 和 接收数据 TCP协议接收数据:• 创建接收端的Socket对象• 监听客户端连接.返回一个对应的Socket对象• 获取输入流,读取数据显示在控制台• 释放资源 TCP协议发送数据: • 创建发送端的Socket对象• 这一步如果成功,就说明连接已经建立成功了.• 获取输出流,写数据• 释放资源 2. 代码实现: (1)发送端: 1 package cn.itcast_06; 2 3 import java.io.IOException; 4 import java

Java基础知识强化之集合框架笔记04:Collection集合的基本功能测试

1. Collection集合的基本功能测试: 1 package cn.itcast_01; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 6 /* 7 * 集合的由来: 8 * 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. 9 * 而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识

Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取个人信息)

1. 获取百度个人信息(使用Gson解析): 2. 代码案例: (1)工程一览图,如下: (2)activity_main.xml: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent

Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例

1. 数据来自于键盘录入 键盘录入数据要自己控制录入结束. 2. 代码实现: (1)发送端: 1 package com.himi.updDemo1; 2 3 import java.io.IOException; 4 import java.net.DatagramPacket; 5 import java.net.DatagramSocket; 6 import java.net.InetAddress; 7 import java.util.Scanner; 8 9 /** 10 * 11