打印流:
(1)就是用来打印各种数据类型数据的.
(2)特点:
A:可以打印各种数据类型。
B:如果启用了自动刷新,在调用println方法的时候,会自动刷新。
C:打印流也是可以直接操作文件的。
问题是:哪些流对象可以直接操作文件?
看API,如果某个流对象的构造方法可以同时接收File和String类型的参数
那么,该流对象就可以直接操作文件。
(3)案例:把复制文本文件的操作用打印流改进
c:\\a.txt---------d:\\b.txt
BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("d:\\b.txt"),true);
String line = null;
while((line=br.readLine())!=null) {
pw.println(line);
}
pw.close();
br.close();
Properties:
(1)是Hashtable的子类。是一个属性集合,键值对都是字符串形成的。
(2)特有功能:
A:setProperty(String key, String value)
B:getProperty(String key)
C:Set<String> stringPropertyNames()
(3)特殊方法:
list():把集合中的数据保存到文本文件。
load():把文本文件中的数据加载到集合中。
store():把集合中的数据保存到文本文件。
(4)案例:
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
/*
* store():把集合中的数据保存到文本文件。
* void store(OutputStream out, String comments)
* void store(Writer w,String comments)
*/
public class PropertiesDemo{
public static void main(String[] args) throws IOException {
// 创建集合对象
Properties prop = new Properties();
System.out.println("prop:" + prop);
// 添加数据
prop.setProperty("zhangsan", "30");
prop.setProperty("lisi", "40");
prop.setProperty("wangwu", "50");
System.out.println("prop:" + prop);
FileWriter fw = new FileWriter("fw.txt");
prop.store(fw, null);
fw.close();
}
}
序列化流:
(1)序列化:把对象按照流一样的方式存储或者在网络中传输。
反序列化:把流数据还原成对象。
(2)序列化流:ObjectOutputStream
void writeObject(Object obj)
反序列化流:ObjectInputStream
Object readObject()
(3)注意:
A:如果一个对象要想被序列化流操作,那么,该对象所属的类必须实现序列化接口。
以启用其序列化功能。
B:序列化接口是没有方法的,它仅仅是一个标记型接口。
(4)要掌握什么呢?
看到一个类实现了Serializable接口,就要知道,该类的对象可以在网络中传输。
你还可以点击鼠标生成一个序列化id值,这样将来对类做一些简单的改动,不会影响我们的数据。