java基础45 IO流技术(输入字符流/缓冲输入字符流)
2024-08-26 11:20:24
一、输入字符流
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 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |
最新文章
- MongoDB进行MapReduce的数据类型
- C++_系列自学课程_第_6_课_bitset集_《C++ Primer 第四版》
- centos 查看是32位还是64位
- Protues记录文档_1
- 求树的重心(POJ1655)
- 获取客户端ip并用正则表达式验证
- 删除select中所有option选项jquery代码
- codeforces 681D Gifts by the List dfs+构造
- c#基础------------静态类与非静态类
- 【HDOJ】3732 Ahui Writes Word
- C# ToString()和Convert.ToString()的区别
- Linux内核源代码
- webupload-upload执行上传时,进入的路径与linux服务器上的不一致
- 百度地图API-覆盖物
- Problem B: 开个餐馆算算账
- Android笔记(五)利用Intent启动活动
- 直接插入排序算法的C++实现
- java发送163邮件
- dbc file
- netty12---线程池简单源码