Writer 抽象类
- Wirter的常用方法
- write(String str)
- write(String str,int off,int len)
- void close()
- void flush()
FileWirte 继承 OutputWriter类
- BufferedWriter 类
- writer();
- flush();
- newLine(); //写入一个换行符。
BufferedFReader类和BufferedWriter类示例:
替换文本中的name为欧巴,type为 狗狗,master为张三。
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.io.BufferedReader;
public class TextReplaceDemo {
public static void main(String[] args) {
Reader reader = null;
BufferedReader bfr = null;
Writer writer = null;
BufferedWriter bfw = null;
File file = null;
try {
// 创建读取窗口,文件在桌面mypet.tmp中。
reader = new FileReader(
"C:\\Users\\Administrator\\Desktop\\mypet.tmp");
bfr = new BufferedReader(reader);
String input =null;
//循环读取和写入每行内容。
while((input=bfr.readLine()) != null){
// 替换读取的字符串。
String str = null;
str = input.replace("name", "欧欧");
str = str.replace("type", "狗狗");
str = str.replace("master", "李伟");
System.out.println(str);
// 创建写入窗口和文件mypet.txt进行关联。
writer = new FileWriter(
"C:\\Users\\Administrator\\Desktop\\mypet.txt");
bfw = new BufferedWriter(writer);
// 写入字符串
bfw.write(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 关闭文件流。
bfw.close();
writer.close();
bfr.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
- 读取包含文本的文本文件时,可能出现中文乱码,怎么办?
- 编码和解码的格式不一致:
GB2312 简体中文、Gbk-中文、Iso08859-1 国际编码、Unicode、UTF-8 常用。
InputStreamReader设置编码格式
InputStreamReader fr=new InputStreamReader(fis,”UTF-8”);
- 编码和解码的格式不一致:
序列化和反序列化
- 什么是序列化和反序列化
序列化->是将对象的状态写入到特定的流(文件)中的过程。
反序列化->则是从特定的流中(文件)获取数据重新构建对象的过程 - 实现序列化
实现Serializable接口。-> 创建对象输出流(ObjectOutputStream) ->调用writeObject()方法将对象写入文件。 -> 关闭对象输出流 - 实现反序列化
实现Serializable接口。-> 创建对象输出流(ObjectOutputStream) ->调用writeObject()方法将对象写入文件。 -> 关闭对象输出流
使用集合保存对象,可以将集合中的所有对象序列化 - Arrays.toString(person[0]);
- DataInputStream和DataOutputStream类:是用特定的数据类型进行读取和写入。
- .readInt(); - .writeInt();
- .readChar(); - .writeChar();
- .readUTF(); - .writeUTF();
- printWriter(); 包装类
printLine();写一行和 readLine()类似;