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(); } } }
這個程式在寫入檔案時,只提取物件的成員資料,而在讀出時將這些資料讀出,並將讀回的資料設定給一個實例,是物件資料還原的一種方式。 |
|