Java IO--字符流--BufferedReader和BufferedWriter
从昨天开始没事情干时,决定梳理梳理Java IO流,因为觉得太混乱这个东西,妈的,咋就这么多类型,想累死谁啊,这里并不是埋怨创造者,而是气自己看着看着老跑偏,实在看不进去,太多了,想睡觉,所以现在决定每天学习一类,我倒是要看看要多久自己才能完成任务!
字符流:啥是字符流呢?又和字节流有啥区别呢?(但是字符流说到底还是字节流,只是封装了一下下。)
| 字符流 | 一个字符或多个字符(1个字符=2个字节,字符类型UniCode) | 语言支持性比较好 |
| 字节流 | 一个字节或对个字节(1字节=8bit) | 对图片、音频支持性较好 |
1 BufferedReader
从流里面读取文本,通过缓存的方式提高效率,读取的信息包括字符、数组、行,缓存的大小可以指定也可以默认,一般默认就够用了。
1.1构造函数
- BufferedReader(Reader in);创建一个默认大小输入缓冲区的缓冲字符流。
- BufferedReader(Reader in, int size);创建一个使用指定大小输入缓冲区的缓冲字符输入流。
1,2初始化
BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
第一个方法是从文件中读取,第二个是标准输入(控制台)读取。
1.3 三种读取方法
- read()读取一个字符,返回读取字符的ascII码,当读取到最末尾时,返回-1 。
- read(char[] cbuf, int off, int len);将读取的字符缓存到char数组里,off开始缓存的数组下标,len要读取的最大字符,返回读取的字符数量,末尾时返回-1 。
- readLine()读取一个文本行,返回String包含该行内容的字符串。
1.3.1 read()代码
public static void bufferedReaderAndWriterTest() throws IOException{
BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
int res = 0;
while((res = br.read()) != -1){
System.out.print((char) res);
}
br.close();
}
运行结果:

1.3.2 read(char[] cbuf, int off, int len)代码
public static void bufferedReaderAndWriterTest() throws IOException{
BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
char[] cbuf = new char[5];
int num = br.read(cbuf, 0, 5);
System.out.println("读取了" + num + "个字符");
for(int i = 0; i < num; i++){
System.out.print(cbuf[i]);
}
br.close();
}
运行结果:

1.3.3 readLine()代码
public static void bufferedReaderAndWriterTest() throws IOException{
BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
String str = br.readLine();
System.out.println(str);
br.close();
}
运行结果:

1.4 其他方法
ready()判断输入流是否准备好被读取
2 BufferedWriter
2.1 构造方法
- BufferWriter(Writer out) 创建一个使用默认大小输出缓冲区的缓冲字符输出流。
- BufferedWriter(Writer our, int size) 创建一个使用指定大小输出缓冲区的缓冲字符输出流。
2.2 初始化
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));
输出到标准输出(控制台)或者一个文本文件。
2.3 三种输出方法
- write(char[] cbuf, int off, int len)写入字符数组的一部分,off开始写入的数组下标,len长度,无返回。
- write(int c) 写入单个字符, 无返回。
- write(String s, int off, int len) 写入字符串的一部分, 无返回。
2.3.1 write(char[] cbuf, int off, int len)代码
public static void bufferedReaderAndWriterTest() throws IOException{
BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));
char[] cbuf = new char[]{'好','好', '学', '习','!'};
bw.write(cbuf, 0, 3);
bw.flush();
bw.close();
}
运行结果:

2.3.2 write(int c)代码
public static void bufferedReaderAndWriterTest() throws IOException{
BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));
bw.write(98);
bw.flush();
bw.close();
}
运行结果:

2.3.3write(String s, int off, int len)代码
public static void bufferedReaderAndWriterTest() throws IOException{
BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));
bw.write("大傻叉龟儿子", 1, 5);
bw.flush();
bw.close();
}
运行结果:

2.4 其他方法
newLine()写入一个行分隔符
-------------------------------------------------------------------------------------------------------------
end
终于写完了,明天继续!
Java IO--字符流--BufferedReader和BufferedWriter的更多相关文章
- Java Io 字符流
Java Io 字符流包含: 1. InputStreamReader 它是由byte流解析为char流,并且按照给定的编码解析. 2. OutputStreamWrite 它是char流到byt ...
- Java IO: 字符流的Buffered和Filter
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader.B ...
- Java IO: 字符流的Piped和CharArray
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍管道与字符数组相关的reader和writer,主要涉及PipedReader.Pip ...
- Java基础---Java---IO流-----BufferedReader、BufferedWriter、缓冲区、装饰设计模式及和继承的区别
IO流 IO流用来处理设备之间的数据传输 java对数据的操作是过流的方式 流按操作数据分为两种:字节流与字符流 流按流向分为:输入流,输出流. IO流常用基类 字节流的抽象基类:InputStrea ...
- java IO字符流
字节流:因为内存中数据都是字节,二进制数据. 字符流:方便处理文本数据.字符流是基于字节流的. ascii 编码表,并且各国都有自己的编码表. unicode码表,世界码表.优化后 utf-8码表. ...
- java -io字符流FileWrite操作演示
FileWriter字符输出流演示: /* * FiileWriter 字符流的操作 * FileWriter 的构造方法 可传递 File类型 还可以传递String类型 * * 方法 : * wr ...
- Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
在上一篇文章中Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream介绍了缓冲流中的字节流,而这一篇着重介绍缓冲流中字符流Buffered ...
- Java文件字符流
1.字符编码(Character encoding)和编码集(Character set) 字符编码(Character encoding)是将字符转为字节或字节数组的过程. 字符集(Characte ...
- Java IO(五)——字符流进阶及BufferedWriter、BufferedReader
一.字符流和字节流的区别 拿一下上一篇文章的例子: package com.demo.io; import java.io.File; import java.io.FileReader; impor ...
随机推荐
- Java---SSH(MVC)面试题
1. 谈谈你mvc的理解 MVC是Model-View-Controler的简称.即模型-视图-控制器.MVC是一种设计模式,它强制性的把应用程序的输入.处理和输出分开. MVC中的模型 ...
- 初识java——运算符和表达式以及注释
java中有不同的运算符,并且在运算中有着优先级的排序计算,其中++和——的优先级最高,最先计算 运算符注意:1,增量和减量运算符++,——. int a=1++; int b=++1; 其中1++表 ...
- 布局 android
1.线性布局 LinearLayout又称作线性布局,是一种非常常用的布局.通过android:orientation属性指定了排列方向是vertical还是horizontal. 如果LinearL ...
- 关于Django Web应用架构设计开发的几个问题
1.关于分层,做过传统JEE应用的同学肯定知道JEE应用会分很多个设计层.根据传统Web应用架构设计一般从上到下分这么几个层(太懒了,不画图了):Web前端层.Web后端交互层.业务层.基础数据设施层 ...
- Django1.8文档阅读手记
主要集中在新特性上. Django1.8好像开始推荐使用python3 Django的QuerySet是延迟加载的,这个文档里面一般会明言,通过Connection SQL显示测试,外键对象也是延迟加 ...
- Sina微博爬取@pyspider
这是一篇不应该写的文章,都写了,针对特定“方式”的爬虫也就没法爬了. 1.模拟登录的一些文章: 解析新浪微博的登录过程(2013-12-23): http://www.cnblogs.com/houk ...
- 自定义ExtJS主题
ExtJS提供的可以使用的主题包对于创建一个干净专业的程序来说已经很有创意了,然而,你可能还是会希望提供自己的一种设计方式或现在存在的企业设计方式. 从历史上来说,给程序美化就是指的给html标签提供 ...
- Learn flask in the hard way:配置环境的安装
开发用的是win10的环境. 首先确保安装了python环境,个人比较适应python2.x的代码方式,所以安装的是python2.7.10. 另外IDE还是我最喜欢的pycharm. 然后开始安装F ...
- 详解Trie
一.Trie的概念 Trie又称字典树,前缀树(事实上前缀树这个名字就很好的解释了Trie的储存方式) 来一张图理解一下Trie的储存方式:(图片来自百度百科) 由这张图我们也可以知道Trie的特点: ...
- Python学习 Part7:类
Python学习 Part7:类 1. 作用域和命名空间 命名空间(namespace)就是一个从名称到对象的映射. 命名空间的一些实例:内置名称集(函数,像abs(),和内置异常名称),一个模块中的 ...