zoukankan      html  css  js  c++  java
  • java读写二进制文件

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

  • 相关阅读:
    计算在线人数
    微软MSMQ消息件研究(一)
    jQuery循序渐进2
    单点登陆的ASP.NET应用程序设计[zt]
    利用SQL2005的缓存依赖
    .Net 操作MSMQ
    GridView中数据格式化
    TcpListener/TcpClient/UdpClient 的区别及联系
    微软消息件MSMQ研究DEMO(二)
    Nhibernate(1)
  • 原文地址:https://www.cnblogs.com/likehua/p/2558085.html
Copyright © 2011-2022 走看看