IO与流 -- 打印流与序列流

使用流读取键盘输入

  • 标准键盘录入代码
  • BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

打印流

  • 打印的好处在于可以保证数据的原样性
PrintStream
FileOutputStream fos = new FileOutputStream("text.txt");
PrintStream ps = new PrintStream(fos);
ps.print(97);
ps.close();
PrintStream ps1 = new PrintStream("text.txt");
ps1.print(97);
ps1.close();
PrintWriter
//读取键盘录入,将录入的数据转成大写输出
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(System.out);
String line = null;
while((line=bufr.readLine())!=null){
    if("886".equals(line)){
        break;
    }
    out.print(line.toUpperCase());
    out.flush();//如果构造方法不带自动刷新 建议使用flush刷新
}
out.close();

序列化

SequenceInputStream

对象序列化

  • 被序列化的类必须实现Serializable接口,这是一个标记接口
ObjectInputStream
ObjectOutputStream
序列化接口的作用

没有方法,不需要覆盖,是一个标记接口,为了启动序列化功能
唯一作用:给每个需要序列化的类都分配一个序列版本号 ,版本号与类相关联
在序列化时将这个序列号一起保存在文件中并在反序列化时读取这个序列号和本类的序列号进行匹配
如果不匹配则会抛出 java.io.InvalidClassException

在实现序列化的时候声明一个常量
private static final long serialVersionUID = 123456L;
同时静态变量不能够被序列化,如果变量不想被静态,也不想被序列化 那么加上transient

一个栗子

持久化对象

FileOutputStream fos = new FileOutputStream("obj.object");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(obj);
oos.close();

读入对象

FileInputStream fis = new FileInputStream("obj.object");
ObjectInputStream ois = new ObjectInputStream(fis);
Object obj = ois.readObject();

你可能感兴趣的:(IO与流 -- 打印流与序列流)