Java从零开始学三十六(JAVA IO- 字符流)
一、字符流
二、对文本文件的读写
2.1、字符输入流

2.2、字符输出流

2.3、综合使用
package com.pb.io.buffered; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class BufereTest {
/*BufferedWriter
* 1.需要修饰到一个指定的输出流(例如:FileWriter)还可以是其它的
* 2.BufferedWriter会覆盖原有文件内容
* 3.需要清空缓冲区,使用flush()方法
* BufferedReader
* 1.需要修饰到一个指定的输入流(例如:FileReader)还可以是其它的
* 2.关闭流
*/
public static void main(String[] args) {
/*
* BufferedWriter写操作
*/
try {
//1.创建文件输出流FileWriter
FileWriter fw=new FileWriter("d:/test/test.txt");
//这里没有加true,是清空文件重新写入,可以加入true
//2.实例化。BufferedWriter对象包装类
BufferedWriter bw=new BufferedWriter(fw);
//3.写入内容
bw.write("大家好!");
bw.write("我要修改内容了");
bw.newLine(); //换行
bw.write("哈哈,我修改完了!");
bw.newLine();
//4.清空缓冲区
bw.flush();
//5.关闭流
bw.close();
fw.close();
System.out.println("==========写入文件结束======");
} catch (IOException e) {
e.printStackTrace();
}
/*
* BufferedReader读文件
*/ try {
//1.声明文件读取对象
FileReader fr=new FileReader("d:/test/test.txt");
//2.声明BufferedRead对象
BufferedReader br=new BufferedReader(fr);
//3.开始读取文件
System.out.println("========开始读取文件========");
String date;
while((date=br.readLine())!=null){
System.out.println(date);
}
System.out.println("========读取文件结束========");
//4.关闭流
br.close();
fr.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } }
结果:
==========写入文件结束======
========开始读取文件========
大家好!我要修改内容了
哈哈,我修改完了!
========读取文件结束========
三、字节-字符转换流
- OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即:将一个字符流的输出对象变为字节流输出对象。
- InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变为字符流的输入对象。
例1.实现文本文件的复制
s1.txt内容 明月几时有,
把酒问青天,
不知道天上宫阙,
今夕是何年。
package com.pb.io.buffered; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter; /*
* 实现文本文件的复制
*使用BufferedReader和BufferedWriter来实现
*/
public class BuffereDemo1 { public static void main(String[] args) { try {
//1.声明BufferedReader和BufferedWriter对象
InputStreamReader isr=new InputStreamReader(new FileInputStream("d:/test/s1.txt"), "GB2312"); //解决中文乱码
//FileReader fr=new FileReader("d:/test/s1.txt");
BufferedReader br=new BufferedReader(isr); OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("d:/test/s2.txt"),"GB2312");
//FileWriter fw=new FileWriter("d:/test/s2.txt"); //s2并不存在,会自动创建
BufferedWriter bw =new BufferedWriter(osw);
//2.开始读取文件
String line; //声明变量用来用来存放读出的内容
int num=1;//用来记录行数
while((line=br.readLine())!=null){
System.out.println("=========正在读出第"+num+"行===========");
System.out.println(line);
System.out.println("=========正在写入第"+num+"行===========");
bw.write(line);
num++;
} System.out.println("======文件写入结束========");
//清空缓冲区
bw.flush();
//关闭输出流
bw.close();
osw.close();
System.out.println("======文件读取结束========");
//关闭输入流
br.close();
isr.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } }
Java从零开始学三十六(JAVA IO- 字符流)的更多相关文章
- Java从零开始学三十三四(JAVA IO-流简述)
一.流概念(stream) File类并不能对文件内容进行读写. 读文件就是指:把文件的内中的数据读取到内存中来 写文件就是指:把内存中的数据写入到文件中去. 通过什么读写文件呢?文件流. 1.1.流 ...
- Java从零开始学三十八(JAVA IO- 重定向IO)
一.三个静态变量 java.lang.System提供了三个静态变量 System.in(默认键盘) System.out(默认显示器) System.err 二.重写向方法 System提供了三个重 ...
- Java从零开始学三十五(JAVA IO- 字节流)
一.字节流 FileOutputStream是OutputStream 的直接子类 FileInputStream也是InputStream的直接子类 二.文本文件的读写 2.1.字节输入流 Test ...
- Java从零开始学三十九(对象序列化)
一.序列化 将对象的状态存储到特定存储介质中的过程 对象序列化,就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便的实现对象的传输或存储. 序列化保存对象的“全景图”,构建对象的“ ...
- Java从零开始学三十二(正则表达式)
一.为什么要有正则 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆份.替换功能. 例如:现在要求判断一个字符串是否由数字组成,则可以有以下的两种做法: 不使用正则完成 使用正则完 ...
- Java从零开始学三十(String和StringBuffer类)
一.StringBuffer连接字符操作 当一个字符串的内容需要被经常改变时就要使用StringBuffer 在StringBuffer中使用append()方法,完成字符串的连接操作 二.Str ...
- Java从零开始学二十六(包装类)
一.包装类 包装类是将基本类型封装到一个类中.也就是将基本数据类型包装成一个类类型. java程序设计为每一种基本类型都提供了一个包装类.这些包装类就在java.lang包中.有8个包装类 二.包装类 ...
- Java从零开始学四十六(Junit)
一.软件测试 软件开发: 项目调研--需求分析--软件设计--程序编码--软件测试--运行维护 软件测试:利用测试工具按照测试方案和流程对产品进行功能和性能测试,使用人工或者自动手段来运行或测试某个系 ...
- 菜鸡的Java笔记 第三十六 - java 函数式编程
StudyLambda Lambda 指的是函数式编程,现在最为流行的编程模式为面向对象,很多的开发者并不认可面向对象,所以很多的开发者宁愿继续使用 C 语言进行开发,也不愿意使用java,c+ ...
随机推荐
- DOM事件绑定方式
普通事件可以直接绑定 比如document.onmouseover=fn; 或者document.addEventListener("mouseover",fn,flase); a ...
- Linux服务器压测/拷机软件收集
最近公司采购了一批服务器,于是收集了一些拷机软件来压测服务器硬件性能.硬件的稳定相对来说比较重要,7x24小时无间断运行,主要看三个硬件:CPU.内存.硬盘. 下面是收集的一些教程,可能网址已经失效了 ...
- windows命令行快捷操作
net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user: ...
- .NET泛型01,为什么需要泛型,泛型基本语法
.NET泛型或许是借鉴于C++泛型模版,借助它可以实现对类型的抽象化.泛型处理,实现了类型和方法之间的解耦.一个最经典的运用是在三层架构中,针对不同的领域模型,在基接口.基类中实现针对各个领域模型的泛 ...
- MVC中CheckBoxList的3种实现方式
比如,当为一个用户设置角色的时候,角色通常以CheckBoxList的形式呈现.用户和角色是多对多关系: using System.Collections.Generic; using System. ...
- 字符串变量作mysql查询条件
原文:http://blog.csdn.net/qing_gee/article/details/41646503 当你的查询条件是一个字符串变量时,你该怎么办,比如字符串可能是“0001ME,000 ...
- 7. python 字符串格式化方法(1)
7. python 字符串格式化方法(1) 承接上一章节,我们这一节来说说字符串格式化的另一种方法,就是调用format() >>> template='{0},{1} and {2 ...
- [翻译] ObjectAL for iPhone and Mac(持续更新)
ObjectAL for iPhone and Mac https://github.com/kstenerud/ObjectAL-for-iPhone 以后补上使用教程 Mac and iOS Au ...
- Python3.6学习笔记(二)
Python 的高级特性 切片 对于指定索引范围取值的操作,Python提供了slice方法,类似于Excel中数据透视表的切片器. >>> L = ['Michael', 'Sar ...
- iOS:UIView视图与组件控件
一.UIView常见属性 (1)@property(nonatomic,readonly)UIView *superview; //获取自己的父控件对象 (2)@property(nonatomi ...