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+ ...
随机推荐
- iOS录音后播放声音小,AudioSessionInitialize failed,AudioQueueStart failed (-50)
方法1: UInt32 audioRoute = kAudioSessionOverrideAudioRoute_Speaker; AudioSessionSetProperty(kAudioSess ...
- Matlab 常用绘图指令(二维图形)
使用matlab的时候常常会忘掉一些指令,每次都要重新查找,挺麻烦的,这里收集一些常用的绘图指令,供自己和大家以后方便查找和使用. 1.例子-包含了常用绘图命令 clear clc %%数据准备 x ...
- 由最小生成树(MST)到并查集(UF)
背景 最小生成树(Minimum Spanning Tree)的算法中,克鲁斯卡尔算法(Kruskal's algorithm)是一种常用算法. 在克鲁斯卡尔算法中的一个关键问题是如何判断图中的两个点 ...
- Docker 1.3 公布
Docker 1.3 公布 Docker 1.3 已经正式公布.新的特性包含镜像签名.进程注入.新的创建和执行容器命令.安全选项和 Mac OS 上进行文件夹共享.特别是针对安全方面的改进,成为本地公 ...
- MVC日期格式化,后台使用Newtonsoft.Json序列化日期,前端使用”f”格式化日期
MVC控制器中,经常使用Newtonsoft.Json把对象序列化成json字符串传递到前端视图.当对象中有DateTime类型的属性时,前后台如何处理才能把DateTime类型转换成想要的格式呢? ...
- 【elaseticsearch】elaseticsearch启动报错Caused by: org.elasticsearch.transport.BindTransportException: Failed to bind to [9300-9400]
elaseticsearch启动报错 [es1] uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupExce ...
- anroid源码下载和编译
本文是在Ubuntu10.10系统上进行实践的. 1 因为我们需要Android的模拟器,所以需要安装Android的SDK,并创建AVD, 可以一次命名为AVD15,AVD22,AVD23,... ...
- 安全:Web 安全学习笔记
背景 说来惭愧,6 年的 web 编程生涯,一直没有真正系统的学习 web 安全知识(认证和授权除外),这个月看了一本<Web 安全设计之道>,书中的内容多是从微软官方文档翻译而来,这本书 ...
- Spring Quartz 持久化解决方案
Quartz是实现了序列化接口的,包括接口,所以可以使用标准方式序列化到数据库. 而Spring2.5.6在集成Quartz时却未能考虑持久化问题. Spring对JobDetail进行了封装,却未实 ...
- [runtime] iOS-Runtime-Headers
Dynamically Generated iOS Headers https://github.com/nst/iOS-Runtime-Headers Here are iOS Objective- ...