原文网址: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. 一种C#读写二进制文件的通用方法

    在日常的工作中,我们经常需要进行一些二进制文件或协议的读写操作,用C#解析二进制文件常常是一件比较麻烦且容易出错的工作,本文介绍了一种在C#中实现快速读写二进制文件通用的方法. 以一个解析Mp3 ID ...

  2. pom.xml错误:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)的解决方法

    pom.xml错误:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)的解决方法 参考文章: (1)pom.xml ...

  3. 我的世java途径错误_我的世界JAVA路径错误的解决方法分享

    我的世界JAVA路径错误该怎么解决呢?JAVA是Minecraft运行的虚拟环境必要条件,需要您安装后才开始游戏.很多童鞋在安装过程中都遇到了JAVA路径错误的提示,这是什么原因导致的?第一手游网必须 ...

  4. java.lang.OutOfMemoryError​异常解决方法

    java.lang.OutOfmemoryError: PermGen Space 的错误,导致项目无法正常运行. 出现这个错误的原因,总结一下: PermGen Space指的是内存的永久保存区,该 ...

  5. 我的世界手机版java安装失败_我的世界中国版JAVA路径错误的解决方法分享

    我的世界中国版JAVA路径错误该怎么解决呢?JAVA是Minecraft运行的虚拟环境必要条件,需要您安装后才开始游戏.很多童鞋在安装过程中都遇到了JAVA路径错误的提示,这是什么原因导致的?九游必须 ...

  6. Java读写二进制文件

    import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io ...

  7. php url乱码java接收,java中url乱码解决方法

    java中url乱码解决方法:(推荐:java视频教程) 1.将字符串转码:newString("xxxxx".getBytes("iso-8859-1"),& ...

  8. java.lang.UnsupportedClassVersionError: JVMCFRE003解决方法--jdk 1.6 中switch的参数无法使用String类型

    java.lang.UnsupportedClassVersionError: JVMCFRE003解决方法--jdk 1.6 中switch的参数无法使用String类型 参考文章: (1)java ...

  9. java.lang unsupported classversion解决方法

    java.lang unsupported classversion解决方法 参考文章: (1)java.lang unsupported classversion解决方法 (2)https://ww ...

最新文章

  1. logstsh xpack 认证_ElasticSearch Kibana 和Logstash 安装x-pack记录
  2. 项目中常用的 19 条 MySQL 优化总结
  3. vlc windows 编译文档
  4. ios android 发东西,Android、IOS主动发事件给React Native
  5. [vue] 你知道vue2.0兼容IE哪个版本以上吗?
  6. Fast R-CNN(理解)
  7. 中职计算机组成原理期末,计组期末复习
  8. sql行转列 列数据不定 sql交叉报表实例
  9. 如何测试sql语句性能,提高执行效率
  10. 通俗易懂:说说 Python 里的线程安全、原子操作
  11. 10亿级流数据交互查询,为什么抛弃MySQL选择VoltDB?
  12. code blocks代码性能分析_介绍几款Python性能优化工具
  13. Android系统源码学习步骤
  14. Win11中文包下载失败?Win11无法安装中文包语言包解决方法
  15. 从键盘输入一个三位整数n,分别求出n的个位数字、十位数字和百位数字
  16. 微博营销的价值和优缺点
  17. python数据结构之单链表
  18. ipv6 socket python网络编程
  19. css中col-lg-1是什么意思,css - 引导程序中“col-md-4”,“col-xs-1”,“col-lg-2”中数字的含义...
  20. 安霸Alberto Broggi :计算机视觉技术驱动自动驾驶的发展 | 2019 AI+智能汽车创新峰会... 1

热门文章

  1. SAP MM 公司间STO发货单输出报错 - 合并工厂AUC1和存储位置6002没有货物收货地点 - 之对策
  2. 2018年中美自动驾驶进展分析报告
  3. 学好人工智能,其实不难,从以下几点开始
  4. 数据标注-人工智能高速路上的基石
  5. AI工程师面试知识点:机器学习算法类
  6. 一句话总结LLE(流形学习)
  7. Centos7为普通用户添加sudo权限
  8. 重磅!“全脑介观神经联接图谱”大科学计划中国工作组成立!
  9. 人脑为何能够快速学习新知识? 用AI的视角来分析
  10. 一图分析华为最新AI生态与未来趋势