源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java读写二进制文件的解决方法

  • 时间:2022-12-06 12:52 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java读写二进制文件的解决方法
[b]接口:Writerable [/b]
[u]复制代码[/u] 代码如下:
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; }
[b]接口实现类:UserWriter [/b]
[u]复制代码[/u] 代码如下:
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接口时写的,并没有在项目中使用,也不知道在项目中这样用会不会有什么问题。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部