字符输入流
常用实现类:
FileReader
构造方法
FileReader(File file);
FileReader(String pathname);
常用方法
int read(char[] buffer); 读取数据到字符数组中 返回读取的字符数
int read(char[] buffer,int offset,int len); 读取指定长度的字符数据到数组中 返回读取的字符数
常用方法:
1、输出一个字符串:void write(String str);
2、输出一个字符串的一部分:void write(String str,int offset,int len);
3、输出一个字符数组:void write(char[] buffer);
4、输出一个字符数组的一部分:void writer(char[] ,int offset,int len);关流方法:void close(); 在try-catch中可以通过try() 形式自动关流。
高效字符流的使用
高效字符输入流
BuffereReaderx
构造方法:
BufferReader(Reader re);
常用方法:
String readLine();读取一行数据其他同普通字符输入流,但是比之前更加高效。
高效字符输出流
BufferWriter
构造方法:
BufferedWriter(Writer wr);
常用方法:
方法基本和普通字符输出流一样,但是比之更加高效。(都是重写自writer类相关方法)
读写二进制文件
DataInputStream读取二进制
和字节流FileInputStream类实现文本文件读取步骤很相似。
DateInputStream顾名思义专门用来读写各种各样的数据的,比如(int,char,long类型等)。
构造方法
DateInputStream(InputStream in)
实现步骤
DateOutputStream输出二进制
于字节流FileOutputStream类实现文本文件读取步骤相似
构造方法:
DataOutputStream(OutputStream out)
实现步骤
DataOutputStream dos = null;
DataInputStream dis = null;
try{
dos = new DataOutputStream(new FileOutputStream("e:/kY.txt"));
dis = new DataInputStream(new FileInputStream("e:/kY.txt"));
dos.writrUTF("Hi,my name is jack");
dos.writeBoolean(true);
String readUTF = dis.readUTF();
boolean readBoolean = dis.readBoolean();
Syso(readUTF);
syso(readBoolean);
}catch(Excption e){
e.printStackTrace();
}finally{
dos.close
dis.close
}
序列化和反序列化
序列化:将对象按照指定的规则存储到文件中。
反序列化:将文件中的数据按照指定的规则转换为对象。
使用集合保存对象,可以将几何中的所有对象序列化。如果想文件中使用序列化机制写入多给对象,那么序列化恢复对象时,必须按照写入的顺序读取。
序列化
ObjectOutputStream
try{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("e:/kY.txt")){
Hotel hotel = new Hotel(1L,"糊涂酒店","糊涂大街",new Date());
oos.writeObject(hotel);
} catch(Excption e){
e.printStackTrace();
}
反序列化
ObjectInputStream
public class Demo {
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();
}
}
}
需要注意,如果不是实现serializable接口就会出现NotSerializableExcption
异常