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

【转】java读写二进制文件的解决方法的更多相关文章

  1. Tomcat 优化 java.lang.OutOfMemoryError: Java heap space 的解决方法

    Tomcat 优化 java.lang.OutOfMemoryError: Java heap space 的解决方法 java.lang.OutOfMemoryError: Java heap sp ...

  2. java.lang.ClassNotFoundException的解决方法

    java.lang.ClassNotFoundException的解决方法   出现这个问题的原因可能很多,但是最终原因都是部署的项目文件中没有这个类包. 那么出错的点在哪呢?逐一排除! 1.首先在项 ...

  3. Tomcat部署java项目java.lang.OutOfMemoryError异常解决方法

    java.lang.OutOfMemoryError异常解决方法 Window系统环境下,在catalina.bat文件第一行添加以下内容 set JAVA_OPTS=-Xms512m -Xmx512 ...

  4. 对于jfinal中java.lang.Long cannot be cast to java.lang.Integer的解决方法

    @Jfinal 老大提供的解决方法 当数据库字段为 int 型(有符号int型),但是如果在 sql 中使用了某些函数,jdbc 会自动转型为 long,例如:select sum(money) fr ...

  5. android 工程里缺少 R.java 文件原因和解决方法

    作为新手,学习android 的时候难免要导入一些示例,目的为了更加了解android各种API用法,顺便也可以学习下别人代码的写法. 可是导入android源码后,基本都有错误,R.java也不会自 ...

  6. Java中线程出现Exception in thread "Thread-0" java.lang.IllegalMonitorStateException异常 解决方法

    代码 package thread; public class TestChongNeng { public static void main(String[] args) { Thread t1 = ...

  7. golang中map并发读写问题及解决方法

    一.map并发读写问题 如果map由多协程同时读和写就会出现 fatal error:concurrent map read and map write的错误 如下代码很容易就出现map并发读写问题 ...

  8. (转)Android工程出现 java.lang.NoClassDefFoundError错误解决方法

    在Eclipse中,导入Android工程,工程没有报错,运行时,出现 java.lang.NoClassDefFoundError类没有找到的错误.从问题上可以看出是导入包出错的原因.遂百度加谷歌. ...

  9. Java小问题的解决方法系列

    1)IDEA中文乱码,解决方法:http://blog.csdn.net/zht666/article/details/8953516 2)卸载OpenJdk,http://my.oschina.ne ...

随机推荐

  1. Android---优化下载让网络访问更高效(三)

    批处理传输和连接 每次启动一个连接---跟传输的数据大小无关---在使用典型的3G无线信号时,就会潜在的导致无线信号消耗近20秒的电量. 如果一个应用程序每隔20秒ping一次服务器,只是告知该应用程 ...

  2. Context中嵌套<Environment>元素

    环境条目  可以在Context中嵌套<Environment>元素,配置命名的值,这些值作为环境条目资源(Environment Entry Resource),对整个web应用可见.比 ...

  3. 高级进阶DB2(第2版)——内部结构、高级管理与问题诊断

    <高级进阶DB2(第2版)——内部结构.高级管理与问题诊断> 基本信息 作者: 牛新庄    出版社:清华大学出版社 ISBN:9787302323839 上架时间:2013-7-3 出版 ...

  4. hdu 4499 Cannon(暴力)

    题目链接:hdu 4499 Cannon 题目大意:给出一个n*m的棋盘,上面已经存在了k个棋子,给出棋子的位置,然后求能够在这种棋盘上放多少个炮,要求后放置上去的炮相互之间不能攻击. 解题思路:枚举 ...

  5. 微信公众平台java开发具体解释(project代码+解析)

    说明: 本次的教程主要是对微信公众平台开发人员模式的解说,网络上非常多类似文章,但非常多都让初学微信开发的人一头雾水,所以总结自己的微信开发经验,将微信开发的整个过程系统的列出,并对主要代码进行解说分 ...

  6. asp.net总结(一)

    前言 asp.net的视频不是很多,但是中间由于毕业论文等一些事情.花的时间比较长,知识所以整体上学习的也不是很连贯 打算在总结的时候来复习一下这些知识.只能是大概的来了解asp.net到底有哪些东西 ...

  7. 【JavaScript】深入分析JavaScript的关系运算和if语句

    JavaScript的关系运算,没有我原想的那么简单.等终于理清它的运算逻辑之后,我的头大了至少一圈.而if语句的真假判定逻辑本身不难,但要把它和关系运算联系起来,相信你会和我一样,到达崩溃边缘.不信 ...

  8. 2015 UESTC Winter Training #4【Regionals 2008 :: Asia - Tehran】

    2015 UESTC Winter Training #4 Regionals 2008 :: Asia - Tehran 比赛开始时电脑死活也连不上WIFI,导致花了近1个小时才解决_(:зゝ∠)_ ...

  9. 渲染器 Shader BitmapShader

    渲染模式: tileX tileY:The tiling mode for x/y to draw the bitmap in.   在位图上 X/Y 方向 瓦工/花砖/瓷砖 模式 CLAMP  :如 ...

  10. java基础01

    1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Runtime Env ...