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);
}
}