java基础45 IO流技术(输入字符流/缓冲输入字符流)
一、输入字符流
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 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |
java基础45 IO流技术(输入字符流/缓冲输入字符流)的更多相关文章
- java基础之IO流(二)之字符流
java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...
- java基础之IO流(一)字节流
java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...
- Java基础之IO流整理
Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...
- java基础篇---I/O技术
java基础篇---I/O技术 对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...
- java基础篇---I/O技术(三)
接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...
- java基础43 IO流技术(输入字节流/缓冲输入字节流)
通过File对象可以读取文件或者文件夹的属性数据,如果要读取文件的内容数据,那么我们就要使用IO技术. 一.输入字节流 输入字节流的体系: -------| InputStream:所有输入字节流的 ...
- java基础46 IO流技术(输出字符流/缓冲输出字符流)
一.输出字符流 1.1.输出字符流体系 --------| Writer:输出字符流的基类(抽象类) ----------| FileWriter:向文件输出数据输出字符流(把程序中的数据写到硬盘中 ...
- Java基础:IO流之字节流和字符流
1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...
- java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理
一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...
随机推荐
- java多线程 -- CountDownLatch 闭锁
CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数 初始化 CountDownLatch.由于调用了 countDown ...
- redis3.2装完后 其它机子访问爆protocol error, got 'n' as reply type byte
服务器上装了reids3.2版本,配置文件中已将bind的选项注释掉, linux的iptables的redis端口也开放 其它机子的PHP访问redis爆“protocol error, got ' ...
- 数据库之Oracle的介绍与使用20180620
/*******************************************************************************************/ 一.orac ...
- Error: cannot allocate vector of size 88.1 Mb问题
这几天训练模型运行代码的时候,老是提示我说:Error: cannot allocate vector of size 88.1 Mb,只知道分配空间不足. 下面是查资料看到的一些回答: 一.这个是R ...
- insert tp5.1
$insertId = Db::name('user_address')->insertGetId($data); 会插入数据,返回插入的 id //$flag = Db::name('user ...
- PythonCodingRule简略
- mysql 设置默认编码为 utf8
vi /etc/mysql/mysql.conf.d/mysqld.cnf [client] default-character-set=utf8 [mysql] default-character- ...
- struct和typedef struct区别
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可 ...
- Dubbo学习笔记0:RPC框架Dubbo介绍
整体来说,一个公司业务系统的演进流程基本都是从单体应用到多应用.在单体应用时,不同业务模块相互调用直接在本地JVM进程内就可以完成,而变为多个应用时,相互之间进行通信就不能简单的进行本地调用了,因为不 ...
- c++虚函数&重写
虚函数是C++中实现多态的一种方法,父类A的一个函数声明为虚函数,在子类B中覆盖定义之后,当在调用的时候使用A*a=new B(),此时调用对应的那个虚函数的名字,则会执行B中的函数.当父类中没有定义 ...