原文网址:http://www.jb51.net/article/36940.htm
接口: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 methods public 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; @Override public 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); } @Override public 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接口时写的,并没有在项目中使用,也不知道在项目中这样用会不会有什么问题。
转载于:https://www.cnblogs.com/wi100sh/p/4834549.html
相关资源:java二进制文件读写