缓冲流:
概述:缓冲流,也叫高效流,是对4个基本的FileXxx流的增强,所以也是4个流,按照数据类型分类:
字符缓冲流:BufferedReader
,
- 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 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