您的位置:首页 > 编程语言 > Java开发

java基础45 IO流技术(输入字符流/缓冲输入字符流)

2018-07-06 12:09 429 查看

一、输入字符流

1.1、输入字符流体系

  ------| Reader:输入字符流的基类(抽象类)
  ----------| FileReader:向指定文件读取数据的输入字符流(把硬盘上的数据读取到程序中)
  ----------| BufferedReader:缓冲输入字符流。   缓冲输入字符流出现的目的:是为了提高效率和拓展功能,其实内部维护了一个8192长度的字符数组

注意:所有缓冲流都不具备读写文件的能力(比如BufferedReader,他要借助FileReader的读功能来读文件)

1.2、字节流和字符流的区别

    1、字节流:字节流是读取文件中的二进制数据,读到的数据并不会自动转换成你看得懂的字符,要通过调用getBytes()转换成字符数据,并且用数组接收。比如:byte[] buf=s.getBytes()
    2、字符流:字符流会把读取到的二进制的数据自动进行对应的编码与解码工作。字符流=字节流+编码(解码)

1.3、FileReader的步骤

    1、找到目标文件
    2、建立数据输入通道
    3、读取数据(把硬盘上的数据读取到程序中)
    4、关闭资源

1.4、实例

1 package com.dhb.file;
2
3 import java.io.File;
4 import java.io.FileReader;
5 import java.io.IOException;
6
7 /**
8  * @author DSHORE / 2018-7-6
9  *
10  */
11 public class Demo14{
12     public static void main(String[] args) throws IOException {
13         readTest();
14     }
15     //输入字符流
16     public static void readTest() throws IOException{
17         //找到目标文件
18         File file=new File("C:\\MyEclipse10\\MyCode\\MyJavaCode\\src\\com\\dhb\\file\\Demo13.java");
19         //建立数据输入通道
20         FileReader fr=new FileReader(file);
21         //读取数据
22         int length=0;
23         while((length=fr.read())!=-1){//读数据
24             System.out.print((char)length);
25         }
26         //关闭资源
27         fr.close();
28     }
29 }

运行结果图

二、缓冲输入字符流

2.1、BufferedReader注意事项

    1.缓冲输入字符流出现的目的:是为了提高效率和拓展功能,其实内部维护了一个字符数组
    2.凡是缓冲流都不具备读写文件的能力

2.2、实例

1 package com.dhb.file;
2
3 import java.io.BufferedReader;
4 import java.io.File;
5 import java.io.FileReader;
6 import java.io.IOException;
7
8 /**
9  * @author DSHORE / 2018-7-11
10  *
11  */
12 public class Demo16 {
13     public static void main(String[] args) throws IOException {
14         readTest1();
15     }
16
17     public static void readTest1() throws IOException{
18         //找到目标文件
19         File file=new File("F:\\a.txt");
20         //建立数据输入通道
21         FileReader fr=new FileReader(file);
22         BufferedReader br=new BufferedReader(fr);
23         /*//方式1:读取数据
24         int length=0;
25         while((length=br.read())!=-1){//一次读一个字符
26             System.out.print((char)length);
27         }
28         br.close();*/
29         //方式2:读取数据
30         String line=null;
31         while((line=br.readLine())!=null){//一次读一行
32             System.out.println(line);
33         }
34     }
35 }

 

 

 

 

 

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9272904.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐