一.字符缓冲流
写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.序列化时,生成一个序列号,是常量,这样就不会发生序列号不同异常
大多数系统类都实现了序列化接口,你只需要把你自定义的类在序列化时实现接口就行了.