DataInputStream、DataOutputStream可提供一些对Java基本数据型态写入的方法,像是读写int、double、 boolean等的方法,由于Java的数据型态大小是规定好的,在写入或读出这些基本数据型态时,就不用担心不同平台间资料大小不同的问题。
这边还是举档案存取来进行说明,有时候您只是要储存一个对象的成员数据,而不是整个对象的信息,成员数据的型态假设都是Java的基本数据型态,您不必要 使用Object输入、输出相关串流对象,而可以使用DataInputStream、DataOutputStream来写入或读出数据,下面这个程序 是个简单的示范:
package onlyfun.caterpillar;
public class Student?{
private String name;
private int score;
public Student() {
name = "N/A";
}
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public void setName(String name) {
this.name = name;
}
public void setScore(int score) {
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
public void showData() {
System.out.println("name: " + name);
System.out.println("score: " + score);
}
}
package onlyfun.caterpillar;
import java.io.*;
public class DataStreamDemo {
public static void main(String[] args) {
Student[] students = {new Student("Justin", 90),
new Student("momor", 95),
new Student("Bush", 88)};
try {
DataOutputStream dataOutputStream =
new DataOutputStream(
new FileOutputStream("data.dat"));
for(Student student : students) {
dataOutputStream.writeUTF(student.getName());
dataOutputStream.writeInt(student.getScore());
}
dataOutputStream.flush();
dataOutputStream.close();
DataInputStream dataInputStream =
new DataInputStream(
new FileInputStream("data.dat"));
for(int i = 0; i < students.length; i++) {
String name = dataInputStream.readUTF();
int score = dataInputStream.readInt();
students[i] = new Student(name, score);
students[i].showData();
}
dataInputStream.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
这个程序在写入档案时,只提取对象的成员数据,而在读出时将这些数据读出,并将读回的数据设定给一个实例,是对象数据还原的一种方式。