• 【转】java读写二进制文件的解决方法


    原文网址: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接口时写的,并没有在项目中使用,也不知道在项目中这样用会不会有什么问题。

  • 相关阅读:
    Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
    大型网站系统架构技术原理透析
    大中型网站架构探秘
    大型网站架构不得不考虑的10个问题
    (推荐)高并发高流量网站架构详解
    可扩展、高可用、负载均衡网站架构设计方案
    nginx内置常用变量
    Linux下nginx支持.htaccess文件实现伪静态的方法!
    扩展js,实现c#中的string.format方便拼接字符串
    Winform退出运行后,删除运行目录(批处理方法)
  • 原文地址:https://www.cnblogs.com/wi100sh/p/4834549.html
Copyright © 2020-2023  润新知