字符流
-
操作char和String类型的数据
输入流
-
Reader 抽象父类
-
FileReader 节点流
常用方法
-
int read():读取一个字节,读取到达末尾,返回-1
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Test { public static void main(String[] args) { try ( //创建字符输入节点流 FileReader fr=new FileReader("file/a.txt") ) { //循环读取所有内容 while (true) { //接收本次读取内容 int n= fr.read(); if (n == -1) { break;//读取结束,跳出循环 } System.out.println((char) n); } } catch ... } }
输出流
-
Writer 抽象父类
-
FileWriter 节点流
常用方法
-
void write(int ):写入一个字符
-
void write(String ):写入一个字符串
package com.bz.test; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class WriterTest { public static void main(String[] args) { try ( //创建字符输出节点流 FileWriter fw=new FileWriter("file/a.txt") ) { //写入单个字符 fw.write(65); fw.write(66); fw.write(67); //写入字符串 fw.write("一二三四五"); fw.write("上山打老虎"); fw.write("老虎没打着"); fw.write("打着小松鼠"); fw.write("松鼠说:你有病啊"); System.out.println("写入成功!"); } catch... } }
缓冲过滤流
-
BufferedReader:输入
-
PrintWriter:输出
-
BufferedWriter中的方法没有PrintWriter多和实用
-
输入
-
String readLine():读取一行内容,读取到达末尾,返回null
import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Test { public static void main(String[] args) { try ( //创建字符输入节点流 FileReader fr=new FileReader("file/a.txt"); //添加缓冲过滤流 BufferedReader br=new BufferedReader(fr) ) { //循环读取所有内容 while(true){ //接收本次读取的本行内容 String s= br.readLine(); if (s == null) { //读取结束,跳出循环 break; } System.out.println(s); } } catch ... } }
输出
-
void print(值):向目标文件写入一个数据,默认不换行
-
void println(值):向目标文件写入一个数据,默认换行
-
void println():向目标文件写入一个空行
package com.bz.test; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class PrintWriterTest { public static void main(String[] args) { try ( //创建字符输出节点流 FileWriter fw=new FileWriter("file/a.txt"); //添加缓冲过滤流 PrintWriter pw=new PrintWriter(fw) ) { pw.print(10); pw.print(6.6); pw.println(); pw.println("一二三四五"); pw.println("上山打老虎"); //创建学生对象 Student stu = new Student("zhangsan", 20, 88); //将学生对象写入目标文件 pw.println(stu); System.out.println("写入成功!"); } catch... } }
与输出语句中print|println方法的区别:
输出语句使用的是标准输出流PrintStream,方法作用为将数据写入到控制台
PrintWriter是字符输出缓冲过滤流,方法作用为将数据写入到目标文件
PrintWriter和ObjectOutputStream读写对象的区别:
oos是将对象序列化之后进行读写,读写的是其对象相关信息,所以可以进行反序列化
pw只是在读写对象引用的toString方法的返回值,无法进行反序列化