一、输入字符流

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、实例

 package com.dhb.file;

 import java.io.File;
import java.io.FileReader;
import java.io.IOException; /**
* @author DSHORE / 2018-7-6
*
*/
public class Demo14{
public static void main(String[] args) throws IOException {
readTest();
}
//输入字符流
public static void readTest() throws IOException{
//找到目标文件
File file=new File("C:\\MyEclipse10\\MyCode\\MyJavaCode\\src\\com\\dhb\\file\\Demo13.java");
//建立数据输入通道
FileReader fr=new FileReader(file);
//读取数据
int length=;
while((length=fr.read())!=-){//读数据
System.out.print((char)length);
}
//关闭资源
fr.close();
}
}

运行结果图

二、缓冲输入字符流

2.1、BufferedReader注意事项

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

2.2、实例

 package com.dhb.file;

 import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException; /**
* @author DSHORE / 2018-7-11
*
*/
public class Demo16 {
public static void main(String[] args) throws IOException {
readTest1();
} public static void readTest1() throws IOException{
//找到目标文件
File file=new File("F:\\a.txt");
//建立数据输入通道
FileReader fr=new FileReader(file);
BufferedReader br=new BufferedReader(fr);
/*//方式1:读取数据
int length=0;
while((length=br.read())!=-1){//一次读一个字符
System.out.print((char)length);
}
br.close();*/
//方式2:读取数据
String line=null;
while((line=br.readLine())!=null){//一次读一行
System.out.println(line);
}
}
}

原创作者:DSHORE

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

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

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

最新文章

  1. MongoDB进行MapReduce的数据类型
  2. C++_系列自学课程_第_6_课_bitset集_《C++ Primer 第四版》
  3. centos 查看是32位还是64位
  4. Protues记录文档_1
  5. 求树的重心(POJ1655)
  6. 获取客户端ip并用正则表达式验证
  7. 删除select中所有option选项jquery代码
  8. codeforces 681D Gifts by the List dfs+构造
  9. c#基础------------静态类与非静态类
  10. 【HDOJ】3732 Ahui Writes Word
  11. C# ToString()和Convert.ToString()的区别
  12. Linux内核源代码
  13. webupload-upload执行上传时,进入的路径与linux服务器上的不一致
  14. 百度地图API-覆盖物
  15. Problem B: 开个餐馆算算账
  16. Android笔记(五)利用Intent启动活动
  17. 直接插入排序算法的C++实现
  18. java发送163邮件
  19. dbc file
  20. netty12---线程池简单源码

热门文章

  1. 简单版AC自动机
  2. Docker网络 Weave
  3. arcgis求邻接矩阵
  4. python 类与对象解析
  5. Linux设备驱动之Ioctl控制
  6. 前端路由的两种模式: hash 模式和 history 模式
  7. MinGW安装设置
  8. poj 2185 Milking Grid
  9. 有用的JavaScript开发小建议
  10. 【Linux】SecureCRT连接Linux乱码