数据流
数据输出流(DataOutputStream):允许把一些数据和其类型一起写道文件中去。
代码使用:
package day0927;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
public class demo14 {
public static void main(String[] args) {
try (DataOutputStream DOS = new DataOutputStream(
new FileOutputStream("src/day0927/a.txt"))
) {
int i = 1;
double d = 1.9;
String str = "你好数据流";
DOS.writeBoolean(false);
DOS.writeByte(97);
DOS.writeInt(i);
DOS.writeUTF(str);
DOS.writeDouble(d);
}catch (Exception e){
e.printStackTrace();
}
}
}
存入文件中的数据:
数据输入流(DataInputStream):把存在文件中的数据读取出来
将刚才保存的数据读取出来(读取的时候一定要注意按照存储的顺序读取否则将报错):
package day0927;
import java.io.*;
public class demo15 {
public static void main(String[] args) {
try (DataInputStream DIS = new DataInputStream(
new FileInputStream("src/day0927/a.txt"))
) {
System.out.println(DIS.readBoolean());
System.out.println(DIS.readByte());
System.out.println(DIS.readInt());
System.out.println(DIS.readUTF());
System.out.println(DIS.readDouble());
}catch (Exception e){
e.printStackTrace();
}
}
}
读取数据展示:
注意点: 读取的时候一定要注意按照存储的顺序读取否则将报错
对象序列化
ObjectOutputStream(对象字节输出流)可以将对象输出保存到文件中。
代码演示:
package day0927;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class demo16 {
public static void main(String[] args) {
try (ObjectOutputStream OOS = new ObjectOutputStream(
new FileOutputStream("src/day0927/b.txt"))
) {
OOS.writeObject(new User("我是MT","123456",1,"男"));
}catch (Exception e){
e.printStackTrace();
}
}
}
运行效果:
注意点:对象如果要参与序列化,那么必须要实现序列化接口(Serializable)。
ObjectIntputStream(对象字节输入流)可以将对象输出保存到文件中。
代码:
package day0927;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class dome17 {
public static void main(String[] args) {
try (ObjectInputStream OIS = new ObjectInputStream(
new FileInputStream("src/day0927/b.txt"))
) {
User o = (User) OIS.readObject();
System.out.println(o);
}catch (Exception e){
e.printStackTrace();
}
}
}
效果:
那么如果对象中的某个属性不需要序列化,则可以使用 transient
修饰此属性。
//使用transient 修饰此属性,这个属性将不会参与序列化。
private transient String password;
按住ctrl点击ArrayList
可以看见它已经实现了Serializable
接口,则可以将对象添加到ArrayList
里面再对
ArrayList
进行序列化保存即可。