1.掌握基本的字符流的使用
字符流的顶级基类:
- Reader
- Writer
字符输入流
常用实现类: FileReader FileWriter
构造:
- FileReader(File file);
- FileReader(String pathname);
常用方法:
- int read(char[] buffer);读取数据到字符数组中,返回读取的字符数
- int read(char[] buffer,int offset,int len);读取指定长度的字符数数据到数组中,返回读取的字符
字符输出流
FileWriter
构造:
- FileWriter(File file);
- FileWriter(String pathname);
- FileWriter(String/File pathname,boolean append);追加数据
常用方法:
- void write(String str);输出一个字符串
- void write(String str,int offset,int len);输出一个字符串的一部份
- void write(char[] buffer);输出一个字符数组
- void write(char[] buffer,int offset,int len);输出一个字符数组的一部份
自动关流: void close(); 在try-catch中可以通过吧try()形式自动关流,这样的话就不用在后面写clise了。
try (
// 1.指定数据源和输出目的地(实现了AutoCloseable 可以自动关流 JDK1.5)
FileReader fr = new FileReader("d:/pet.template");
FileWriter fw = new FileWriter("e:/temp/pet.txt");
){
// 2.读取数据
char[] buffer= new char[1024];
// 定义字符串缓冲区
StringBuffer sb = new StringBuffer();
int len = 0;
while((len = fr.read(buffer)) != -1) {
// 追加字符数据
sb.append(buffer,0,len);
}
// 3.内容替换
String before = sb.toString();
System.out.println("替换前:"+before);
String after = before.replace("{name}", "苏苏")
.replace("{type}", "吃天然牧草长大的莱流")
.replace("{master}", "特仑苏");
System.out.println("替换后:"+after);
// 4.输出内容
fw.write(after);
} catch (Exception e) {
e.printStackTrace();
}
2.掌握高效字符流的使用
高效字符输入流
BufferedReader
构造:
BufferedReader(Reader re);
常用方法:
String readLine();读取一行数据
其他同普通字符输入流,但是比之更加高效
高效字符输出流
BufferedWriter
构造:
BufferedWriter(Writer Wr)
常用方法:
方法基本和普通字符输出流一样,但是更加高效。(都是重新重写自Wriyrt类的相关方法)
3.掌握序列化和反序列化的实现(对象流)
序列化: 将对象按照指定的柜子存储到文件中。
反序列化: 将文件中的数据按照指定的规则转换为对象。
序列化
ObjectOutputStream
对象序列化是一个用于将对象状态转换为字节流的过程,可以将其保存到磁盘文件中或通过网络发送到任何其他程序;
反序列化
ObjectInputStream
从字节流创建对象的相反的过程称为反序列化。而创建的字节流是与平台无关的,在一个平台上序列化的对象可以在不同的平台上反序列化。
public class Demo2 {
public static void main(String[] args) {
try (
// 构造:ObjectInputStream(InputStream is)
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/hotel.txt"));
){
// 反序列化
Object obj = ois.readObject();
Hotel hotel = (Hotel)obj;
System.out.println(hotel);
} catch (Exception e) {
e.printStackTrace();
}
}
}