java基础--字符缓冲流,Properties,序列化

一.字符缓冲流


FileWriter fw = new FileWriter("/Users/lanou/Desktop/test/weixin.txt");
//创建缓冲字符流
BufferedWriter bw = new BufferedWriter(fw);
//写
bw.write("苟利国家生死以");
bw.newLine();
bw.write("苟利国家生死以");
bw.write("苟利国家生死以");
//刷新(字符流都需要刷新)
bw.flush();
bw.close();

readLine()一行一行读
返回的字符串 不包括换行符
读完返回 null
Reader fr = new FileReader("/Users/lanou/Desktop/test/weixin.txt");
BufferedReader br = new BufferedReader(fr);
String string = " ";
while((string = br.readLine())!=null) {
System.out.println(string);
}

二.Properties(双列集合)

继承 Hashtable
该集合是集合中唯一能和io流产生关系的集合
添加方法 setProperty
Properties properties = new Properties();
//添加数据(特有方法 只能添加字符串)
properties.setProperty("name", "王龙");
properties.setProperty("age","16");
for (Object key : properties.keySet()) {
String k = (String)key;
System.out.println(k+ "=" + properties.getProperty(k));
}
//枚举器
Enumeration<?> propertyNames = properties.propertyNames();
while (propertyNames.hasMoreElements()) {
String nextElement = (String)propertyNames.nextElement();
System.out.println(nextElement +"="+ properties.getProperty(nextElement) );
}
读取方法load
//读取文件最终会把数据 加载到集合中
//文件格式 key=value
Properties properties = new Properties();
//文件名字规范 一般把Properties集合
//可以直接加载文件的 后缀名 都使Properties来标识
FileInputStream fis = new FileInputStream("/Users/lanou/Desktop/test/weixin.properties");
properties.load(fis);
fis.close();
System.out.println(properties);

三.序列化与反序列化

1.写对象的方法
//创建序列化流
FileOutputStream fos = new FileOutputStream("/Users/lanou/Desktop/test/wuqian.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
//序列化接口 Serializable 标识性接口
//如果你这个类想进行序列化,必须实现接口
oos.writeObject(new Person("wanglong", 18));
oos.close();
2.读取的方法
FileInputStream fis = new FileInputStream("/Users/lanou/Desktop/test/wuqian.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
//读取对象时 需要按照你的class文件来读取
Object readObject = ois.readObject();
System.out.println(readObject);
ois.close();		
注意:
1.如果成员变量是静态的,不能进行序列化,因为序列化指的是对象序列化 静态变量属于类.
使用关键词 transient(瞬态) 阻止成员变量序列化
2.序列化时,生成一个序列号,是常量,这样就不会发生序列号不同异常
大多数系统类都实现了序列化接口,你只需要把你自定义的类在序列化时实现接口就行了.




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值