介面:Writerable
package com.geoway.pad.common;import java.io.DataInput;import java.io.DataOutput;import java.io.IOException;public interface Writerable { //write public void write(DataOutput data) throws IOException; //read public void read(DataInput di) throws IOException;}
介面實作類別:UserWriter
package com.geoway.pad.common;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.DataInput;import java.io.DataInputStream;import java.io.DataOutput;import java.io.DataOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.UUID;public class UserWriter implements Writerable{//getter setter methodspublic int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public String getId() {return id;}public void setId(String id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public boolean isAdministrator() {return administrator;}public void setAdministrator(boolean administrator) {this.administrator = administrator;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public void setPassword(String password) {this.password = password;}public String getPassword() {return password;}public void setText(String text) {this.text = text;}public String getText() {return text;}public void setImage(byte[] image) {this.image = image;}public byte[] getImage() {return image;};//private fields private int number; private String id; private int age; private boolean administrator; private String userName; private String password; private String text; private byte[] image;@Overridepublic void write(DataOutput data) throws IOException { data.writeInt(number); data.writeUTF(id); data.writeInt(age); data.writeBoolean(administrator); data.writeUTF(userName); data.writeUTF(password); data.writeUTF(text); data.write(image);}@Overridepublic void read(DataInput di) throws IOException { this.number=di.readInt(); this.id=di.readUTF(); this.age=di.readInt(); this.administrator=di.readBoolean(); this.userName=di.readUTF(); this.password=di.readUTF(); this.text=di.readUTF(); //讀取圖片 this.image=new byte[2048]; try{ di.readFully(this.image); }catch(Exception e){ System.out.println(e.toString()); }} public static byte[] in2byte(InputStream is) throws IOException{ byte[] bs= new byte[1024]; ByteArrayOutputStream bos = new ByteArrayOutputStream(); int len = -1; while((len=is.read(bs))!=-1){ bos.write(bs,0,len); } bs = bos.toByteArray() ; return bs ; } public static void copy(InputStream in, OutputStream out) throws IOException { byte[] buf = new byte[1024]; while (true) { int len = in.read(buf); if (len < 0) break; out.write(buf, 0, len); } } public static void main(String[] args) throws FileNotFoundException, IOException{UserWriter user=new UserWriter();user.setUserName("likehua");user.setPassword("password");user.setId(UUID.randomUUID().toString());user.setNumber(123);user.setAdministrator(false);//加一段文字user.setText("做一個天氣預報,可以儲存要顯示的城市名稱 在增加城市頁面,我的rms關鍵操作如下(其中SetCanvas.cityName是一個Vector,用來儲存城市名,在執行此段代碼之前,我已經把新增加的城市名添加進了這個Vector "); //傳入一張圖片 user.setImage(in2byte(new FileInputStream("c:\\1.jpg")));user.write(new DataOutputStream(new FileOutputStream("c:\\user.data")));System.out.println("完畢");System.out.println("....讀取開始...");UserWriter u=new UserWriter();u.read(new DataInputStream(new FileInputStream("c:\\user.data")));System.out.println(u.getUserName());System.out.println(u.getPassword());System.out.println(u.isAdministrator());System.out.println(u.getText());//拿出圖片copy(new ByteArrayInputStream(u.getImage()), new FileOutputStream("c:\\copy.jpg"));}}
本例 只是本人測試DataOutput和DataInput介面時寫的 並沒有在項目中使用 也不知道在項目中這樣用 會不會有什麼問題。