IO流输入和输出(下)

字符输入流

常用实现类:

​ 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异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值