当前位置:  编程技术>java/j2ee

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

    来源: 互联网  发布时间:2014-10-25

    本文导语:  接口: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      ...

接口: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中的负数二进制表示?
  • 问几个关于JAVA二进制非常简单的问题,50分赠送
  • 如何用Java实现二进制文件到文本文件的相互转化?
  • 在java中如果想将一个文件以二进制的方式打开,应如何做?
  • 很奇怪,varchar2类型在sql*plus中可以看到正常的字符串,用java读出来却是二进制?
  • java实现插入mysql二进制文件,blob类型,遇到问题及解决办法
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • 请问JAVA如何读写注册表
  • java中如何实现串口读写?
  • JAVA Applet能够读写文件吗?
  • Java中有没有什么类来实现读写注册表文件?
  • VCard格式读写的Java类库 cardme
  • Java读写MPX文件包 MPXJ
  • 怎样用JAVA函数读写注册表,有这样的函数吗
  • 求救,java中读写excel的问题
  • 有什么办法自己用java编写一个数据库读写的文件呀?
  • RSS的Java读写库 RSSpect
  • java中如何实现读写类似vc中结构数据?
  • 高分求够JAVA读写XML方面的电子书籍下载地址
  • 请问:java语言能读写注册表吗?多谢多谢,
  • 如何用java在linux中读写串口啊?请高手指点
  • 用JAVA的IO怎么实现图形文件(GIF/JPG)的读写,100分奉送!
  • 学习JAVA时写了个读写Ini文件的类,赏脸的朋友请进来留个话吧……
  • Java 配置文件读写 Commons Configuration
  • Java的中文读写问题,有请各位了。
  • 分享关于JAVA 中使用Preferences读写注册表时要注意的地方
  • java多线程读写文件示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 感觉java胜任大型企业级的任务绰绰有余了,可是面对一些小些企业的解决方案听的并不是很多,所以我希望听听各位的看法(如果实际解决过这
  • 请问java中多态性是怎么解决的?
  • java 对树的操作,TreeSet,能否插入相同的数据,如果相同,如何解决
  • Java条形码解决方案 Barbecue
  • Java报表解决方案 OpenReports
  • java.lang.NoclassDefFoundError,怎么解决?
  • 用Java可以解决这个问题吗?急!!!
  • LINUX下的JAVA串口通讯问题,如能解决,不胜感激
  • java中怎样解决汉字乱码问题?
  • 寻找基于JAVA/J2EE的CRM解决方案
  • Java 监控解决方案 Apache Sirona
  • java中出现outofmemory的错误,这要怎么解决?
  • 数据库中缓冲池的java解决
  • 我刚刚学java,可是碰到下面一个问题,请问该如何解决。
  • 解决java 查看JDK中底层源码的实现方法
  • 请教高手:在基于Java的三层分布式结构应用中的打印的解决方案(套打)
  • 贴几篇文章,关于Java 编程技术中汉字问题的分析及解决,大家共同学习吧......
  • Java的Web开发解决方案 OpenHandX
  • java中tomcat的80端口被占用问题解决
  • Error: java.lang.ArrayIndexOutOfBoundsException,什么意思?如何解决?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3