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

 

 

以上是 java读写二进制文件 的全部内容, 来源链接: utcz.com/z/389592.html

回到顶部