Java中的打印流和对象输入输出流

Print打印流

概述

1、Print:打印流,只能做输出没有输入。

2、打印流分为字节打印流和字符打印流。

3、PrintWriter:字符打印流(主要使用)。

4、Print方法可以打印各种数据类型。

5、从程序中向文件打印输出内容即可。

6、Print的底层使用的是Writer方法,只是Print支持更多的数据类型。

7、实际应用:从服务器端使用打印流Print将网页内容响应给浏览器。

常用类的使用

Print打印流的常用类就是字符打印流,因此我们这里只了解PrintWriter字符打印流。

代码示例

public static void main(String[] args) throws FileNotFoundException {
    
    
        PrintWriter print = new PrintWriter("G:\\Demo.html");
        print.println("<h1>aaaaa</h1>");//换行打印,如果是网页体现在源代码换行
        print.print("<h1>aaaaa</h1>");//直接打印
        print.write("<h1>aaaaa</h1>");
        print.close();
    }

对象输入输出流

概述

1、把Java程序中产生的对象输出到文件中。

2、在某种情况下,我们想把对象中的数据长久保存下来,之后又需要将文件中的对象信息读入进来还原对象。比如在实际应用中:当服务器关闭时可以将一些对象缓存到文件中,再次启动时,将对象信息还原。

3、对象的输入输出流主要即使用于写入对象信息与读取对象信息。对象信息一旦写到文件上,那么对象信息就可以做到持久化了。

5、要将序列化之后的对象保存下来,需要通过对象输出流将对象状态保存,之后再通过对象输入流将对象状态恢复。

6、对象输出流:ObjectOutputStream;对象输入流:ObjectInputStream。在ObjectOutputStream中用readObject()方法可以直接读取一个对象,在ObjectInputStream中用writeObject()方法可以直接将对象保存到输出流中。

对象序列化

1、对象的寿命通常随着生成该对象的程序的终止而终止。

2、对象的输出流将指定的对象写入到文件的过程,就是将对象序列化的过程。

3、对象的输入流将指定序列化好的文件读出来的过程,就是对象反序列化的过程。

4、对象的序列化必须要实现Serializable接口。

(1)Serializable接口中没有任何方法。当一个类声明实现Serializable接口后,表明该类可被序列化。

(2)在类中可以生成一个编号 private static final long serialVersionUID = -5974713180104013488L; 编号是随机生成并且是唯一的。

(3)serialVersionUID 用来表明实现序列化类的不同版本间的兼容性。某个类在与之对应的对象已经序列化出去后做了修改,该对象依然可以被正确反序列化

代码示例

import java.io.*;

class User implements Serializable {
    
    

    private static final long serialVersionUID = -2372070476257877421L;
    private String name;
    private Integer passwd;

    public User(String name, Integer passwd) {
    
    
        this.name = name;
        this.passwd = passwd;
    }

    @Override
    public String toString() {
    
    
        return "User{" +
                "name='" + name + '\'' +
                ", passwd=" + passwd +
                '}';
    }
}
public class ObjectStreamDemo3 {
    
    
    /*这是一个程序入口*/
    public static void main(String[] args) throws IOException {
    
    
        User user = new User("admin",123);
        FileOutputStream out = new FileOutputStream("G:\\ser.obj");
        ObjectOutputStream output = new ObjectOutputStream(out);
        output.writeObject(user);
        output.close();
    }
}

class ObjectStreamDemo4{
    
    
    /*这是一个程序入口*/
    public static void main(String[] args) throws IOException, ClassNotFoundException {
    
    
        FileInputStream in = new FileInputStream("G:\\ser.obj");
        ObjectInputStream input = new ObjectInputStream(in);
        User use = (User) input.readObject();
        System.out.println(use);
    }
}

猜你喜欢

转载自blog.csdn.net/Lotus_dong/article/details/110817438
今日推荐