Print流:
打印流 只做输出没有输入 打印流分为字节打印流和字符打印流
PrintWrite:打印字符流,用于从程序中单向的输出内容
print();方法可以打印更多的数据类型,底层使用的还是write()方法
PrintWriter printWriter = new PrintWriter("D:/demo.html");
printWriter.println("<h1>aaaaaa<h1>");
printWriter.println("<h1>aaaaaa<h1>");
printWriter.println("<h1>aaaaaa<h1>");
printWriter.println("<h1>aaaaaa<h1>");
printWriter.println("<h1>aaaaaa<h1>");
printWriter.flush();
printWriter.close();
对象输入输出流–对象序列化:
对象是在内存中存储的,内存中数据随着程序结束就销毁了,有时需要将这些对象保存下来,使用时
再还原回来,
可以使用对象输入流和输出流,将对象信息写入到文件中,就可以做到持久化存储。
对象输入输出流,主要的作用是用于写入对象的信息与读取对象的信息
对象的输出流:ObjectOutputStream 包装流
对象的输入流:ObjectInputStream
将对象输出到文件中称为对象的序列化 将对象从文件输入到程序中称为对象的反序列化,反序列化过
程中会创建新的你的心存储文件中的信息,也是创建对象的方法之一
//对象的序列化
FileOutputStream fileOutputStream = new FileOutputStream("D:/object.txt");
String s = "abc";
Date d = new Date();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(s);
objectOutputStream.writeObject(d);
objectOutputStream.flush();
objectOutputStream.close();
//对象的反序列化
FileInputStream fileInputStream = new FileInputStream("D:/object.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
String s = (String) objectInputStream.readObject();
Date d = (Date)objectInputStream.readObject();//这也是Java创建对象的一种方法
System.out.println(s);
System.out.println(d);
objectInputStream.close();
Serializable接口:
如果需要将类序列化到文件中,该类必须实现Serializable接口,为我们的类再运行时生成一个编
号(唯一的)
默认生成序列号,会在类信息发生修改后,序列号重新生成
显示的生成序列号,类信息发生修改后,序列号不变
transient关键字:所修饰的属性可以不用被序列化
public class Car implements Serializable {
private static final long serialVersionUID = -6040719099052973040L;//显示的生成序列号
private String name ;
private transient int price;//不会被序列化
public Car(String name, int price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Car{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
}
public class ObjectStream2 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
/*FileOutputStream fileOutputStream = new FileOutputStream("D:/object.txt");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
Car car = new Car("宝马",30000000);
objectOutputStream.writeObject(car);
objectOutputStream.flush();
objectOutputStream.close();*/
FileInputStream fileInputStream = new FileInputStream("D:/object.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Car car = (Car)objectInputStream.readObject();
System.out.println(car);
objectInputStream.close();
}
}