首页 > 其他 > 详细

缓冲流,转换流,序列化流

时间:2019-04-02 11:42:00      阅读:118      评论:0      收藏:0      [点我收藏+]

缓冲流:

概述:缓冲流,也叫高效流,是对4个基本的FileXxx流的增强,所以也是4个流,按照数据类型分类:

 

  • 字节缓冲流BufferedInputStreamBufferedOutputStream

  • 字符缓冲流BufferedReaderBufferedWriter

  • 缓冲流的基本原理,是创建流对象时候,会创建一个内置的默认大小的缓冲区数组,通过缓冲区书写.

构造方法:

- public BufferedInputStream(InputStream in) :创建一个 新的缓冲输入流。 
- public BufferedOutputStream(OutputStream out): 创建一个新的缓冲输出流。

 构造举例,代码如下图片加载.

 1 package com.heima.zifu;
 2 
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7 
 8 //打印图片
 9 public class Demo01 {
10     public static void main(String[] args) throws Exception{
11         //创建缓冲字节输入流对象指定数据源
12         BufferedInputStream shuru=new BufferedInputStream(new FileInputStream("C:\\Users\\ASUS\\Desktop\\截图\\123.jpg"));
13         //创建缓冲字节输出流对象指定数据源
14         BufferedOutputStream shucu=new BufferedOutputStream(new FileOutputStream("123.jpg"));
15         //读写数据
16         //定义长度
17         byte [] bytes=new byte[1024];
18         //定义长度
19         int len;
20         while ((len=shuru.read(bytes))!=-1){
21             //导出数据
22             shucu.write(bytes,0,len);
23         }
24         //关闭资源
25         shucu.close();
26         shuru.close();
27 
28     }
29 }

 高效率测试:

 基本代码如下:

 

 1 package com.heima.zifu;
 2 
 3 import java.io.*;
 4 
 5 //高效流输出时间
 6 public class Demo03 {
 7     public static void main(String[] args) {
 8         //记录开始时间
 9         long kaishi = System.currentTimeMillis();
10         try {
11             //创建高效流字节输入
12             BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("C:\\Users\\ASUS\\Desktop\\截图\\222.jpg"));
13             //创建高效流字节输出
14             BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("22222.jpg"));
15             {
16                 //读写数据
17                 int a;//定义变量
18                 while ((a=bufferedInputStream.read())!=-1){
19                     bufferedOutputStream.write(a);
20                 }
21             }
22         } catch (Exception e) {
23             e.printStackTrace();
24         }
25         //记录结束时间
26         long jieshu=System.currentTimeMillis();
27         //输出
28         System.out.println("高效流花费时间:"+(jieshu-kaishi)+"毫秒");
29 
30     }
31 }
32 //输出结果:高效流花费时间:37毫秒

 

 

 

 总结:经过对比发现高效流比普通流快了不少.

 字符缓冲流特有的方法:

 

- BufferedReader:public String readLine(): 读一行文字。 
- BufferedWriter:public void newLine(): 写一行行分隔符,由系统属性定义符号。

 

 readLine()方法读取一行代码:

 代码演示:

 1 package com.heima.zifu;
 2 import java.io.BufferedReader;
 3 import java.io.FileReader;
 4 //readLine方法
 5 public class Demo04 {
 6     public static void main(String[] args) throws Exception{
 7         //创建高效字符输入流对象
 8         BufferedReader bufferedReader = new BufferedReader(new FileReader("c.txt"));
 9         //定义字符串
10         String line=null;
11         //循环读取
12         while ((line=bufferedReader.readLine())!=null){
13             for(int i=0;i<line.length();i++){
14                 System.out.println(line+" "+i);
15                 System.out.println("-----------");
16             }
17         }
18         //释放资源
19         bufferedReader.close();
20     }
21 }

 

 

newLine方法演示写一行分割符:

代码演示:

 

 1 package com.heima.zifu;
 2 
 3 import java.io.BufferedWriter;
 4 import java.io.FileWriter;
 5 import java.io.IOException;
 6 
 7 public class Demo05 {
 8     public static void main(String[] args) throws Exception {
 9         //创建高效字符输出流对象
10         BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("a.txt"));
11         //写出数据
12         bufferedWriter.write("世人笑我太疯癫,");
13         //写出换行
14         //BufferedWriter:public void newLine():
15         // 写一行行分隔符,由系统属性定义符号。
16         bufferedWriter.newLine();
17         bufferedWriter.write("我笑世人看不穿。");
18         //释放资源
19         bufferedWriter.close();
20     }
21 }
22 //输入结果
23 /*
24 世人笑我太疯癫,
25 我笑世人看不穿。
26  */

 

 

 

练习:给文本排序
分析:

  1. 逐行读取文本信息。

  2. 解析文本信息到集合中。

  3. 遍历集合,按顺序,写出文本信息。

 1 package com.heima.zifu;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.BufferedWriter;
 5 import java.io.FileReader;
 6 import java.io.FileWriter;
 7 import java.util.HashMap;
 8 
 9 //练习文本排序
10 public class Demo06 {
11     public static void main(String[] args) throws Exception {
12         /*
13         案例分析
14        1. 逐行读取文本信息。
15        2. 解析文本信息到集合中。
16        3. 遍历集合,按顺序,写出文本信息。
17          */
18         //创建双列集合,保存文本数据
19         HashMap<String, String> objectObjectHashMap = new HashMap<>();
20         //创建高效字符输入流对象
21         BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\Users\\ASUS\\Desktop\\截图\\a.txt"));
22         //创建高效字符输出流对象
23         BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("aaaaa.txt"));
24         //读取数据
25         //定义变量
26         String a = null;
27         while ((a = bufferedReader.readLine()) != null) {
28             //解析文本
29             String[] split = a.split("\\.");
30             //保存到集合中
31             // String str = new String(split[1].getBytes(), "utf-8");文本
32             objectObjectHashMap.put(split[0], split[1]);
33         }
34         //释放资源
35         bufferedReader.close();
36         //遍历集合
37         for (int i = 1; i <= objectObjectHashMap.size(); i++) {
38             String key = String.valueOf(i);
39             //获取文本中的内容
40             String value = objectObjectHashMap.get(key);
41             //写出拼接文本
42             bufferedWriter.write(key + "." + value);
43             //写出换行
44             bufferedWriter.newLine();
45         }
46         //释放资源
47         bufferedWriter.close();
48     }
49 }

 

缓冲流,转换流,序列化流

原文:https://www.cnblogs.com/luliang1215/p/10641512.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!