Print流只有输出流(Print流不抛出异常,而且有自动flush功能):PrintStream/PrintWriter输出字节/字符
Print流也是一种处理流,包在别的流外面,它是一个输入端接在键盘上的管道,输出端可以通过System.setOut(PrintStream ps)修改
eg:
import java.io.*;
public class PrintText {
public static void main(String[] args) {
FileOutputStream fos = null;
PrintStream ps = null;
try{
fos = new FileOutputStream("D:/abc.txt");
ps = new PrintStream(fos);//初始化的同时设置PrintStream对象ps的管道输出端
for(int i = 0;i <= 100;i++) {
fos.write(i);
}
}catch(IOException e) {
System.out.println("error");
}
if(ps != null)
System.setOut(ps); //设置输出管道的指向(通过ps指向文件D:/abc.txt)
for(int i = 1;i <= 100;i++) {
System.out.print(i + " ");
if(i/10 == 0)
System.out.println();
}
}
}
Object流:
画板上画一个图形,将图形的各种属性值序列化作为一个整体对象转换成字节流写到硬盘或者网络上,这就是Object流的作用比如游戏中的存档。
Serializable接口:如果一个对象想要被序列化必须使用Serializable接口,Serializable接口没有具体的方法,一个标记性接口(即告诉编译器该对象可以被序列化)。
transient关键字:透明的,修饰序列化对象的成员变量,输出默认值为0,即序列化的时候该关键字修饰的值不予考虑,不往硬盘上写入。
Externalizable:Serializable的子接口。Serializable是JDK控制序列化过程,Externalizable可以自己控制(具体方法查API文档)。(老师的建议是能让JDK控制就不要自己控制)