关闭

把一个对象存储到硬盘上——Externalizable

标签: android
374人阅读 评论(0) 收藏 举报

Java的对象不仅可以在内存中调用,还可以在硬盘中存取,需要实现一个Externalizable接口,下面介绍其简单用法

首先,写一个类实现Externalizable接口

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;

public class Car implements Externalizable{
	public Car(){}
	public Car(int id,int price){
		this.id = id;
		this.price = price;
	}
 private int id;
 public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public int getPrice() {
	return price;
}
public void setPrice(int price) {
	this.price = price;
}
private int price;

//写入硬盘的方法
@Override
public void writeExternal(out) throws IOException {
	// TODO Auto-generated method stub
	System.out.println("开始写入");
	out.writeObject(id);//ObjectOutput这个东西也就只有在这能用到了把 
	out.writeObject(price);
        out.flush();
        out.close();

 }
//从硬盘读出的方法
 @Override
public void readExternal(ObjectInput in) throws IOException,
		ClassNotFoundException {
	// TODO Auto-generated method stub
	System.out.println("开始读出");
	this.id = (int)in.readObject();
	this.price = (int)in.readObject();
	return;
}
}

调用方法

		Externalizable car1 = new Car(8,2);
		car1.writeExternal(new ObjectOutputStream(new FileOutputStream(new File("d:/exteral.txt"))));
		Car car2 = new Car();
		car2.readExternal(new ObjectInputStream(new FileInputStream(new File("d:/exteral.txt"))));
		System.out.println(car2.getId()+" "+car2.getPrice());

不过目测Serializable也可以实现相同的功能,代码如下

import java.io.Serializable;

public class Person implements Serializable {
	private String name;
	private int age;
	private int id;
	
	public Person(){}
	public Person(String name,int age,int id){
		this.name = name;
		this.age=age;
		this.id=id;
	}
	
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	
	
}

调用

ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(new File("d:/person1.txt")));
		objectOutputStream.writeObject(new Person("haha",25,1));
		objectOutputStream.close();
		
		ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(new File("d:/person1.txt")));
		Person p1 = (Person) objectInputStream.readObject();
		objectInputStream.close();
		System.out.println(p1.getName()+p1.getAge()+p1.getId());


0
0
查看评论

自制操作系统——02(读磁盘数据到内存)

boot.asm代码:[org 0x7c00] KERNEl_ADDR equ 0x820;数据要加载到0x8200:0000处(姑且当作是内核) mov bx,LOADING_STR call print_str;输出loading...字符串,bx是字符串地址参数mov ah,0x02;2h代表...
  • csjapan
  • csjapan
  • 2016-09-13 16:07
  • 243

对象序列化至硬盘

在编程的时候,经常遇到需要把一个对象存储之硬盘的情况,针对这种情况,java中使用ObjectOutputStream(FileOutPutStream)即可实现 //写入硬盘HashMap<Object,Object> hm=new HashMap<Object,Object&...
  • u011118873
  • u011118873
  • 2016-06-01 05:18
  • 181

通过Servlet实现页面上传文件(到硬盘F)

package servlet4; import java.io.FileOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.servlet.Ser...
  • wazqw
  • wazqw
  • 2016-08-31 10:37
  • 127

将文件上传到服务器硬盘

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import ja...
  • majun_guang
  • majun_guang
  • 2015-05-22 15:59
  • 492

如何将数据库二进制图片保存到硬盘上

1.建立一个aspx页面,copy  html代码DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w...
  • jbeauty
  • jbeauty
  • 2007-01-07 11:05
  • 520

java 输出到硬盘文件上

/**  *   */ package TestPack; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import ...
  • xyqzki
  • xyqzki
  • 2013-03-05 16:44
  • 1978

一道经典面试题“I love china”的实现

一道经典面试题“I love china”的实现 作者:冯老师,华清远见嵌入式学院讲师。 来看一道经典的面试题,题目要求如下: 给定一个字符串“I love china”,编写程序完成以单词为单位的逆序,如“china love i”,并要求允许使用第三方变量保存数据,但可以使用辅助变量指针等...
  • u013265795
  • u013265795
  • 2015-04-16 21:46
  • 653

android之对象存储在本地或者sdcard

android之对象存储在本地或者sdcard文章链接:知识点 file文件保存在sdcard或者本地; 从本地或者sdcard中读取文件; 新名词记录{Java io操作} 概述有时候我们需要APP在没有网络的情况下面,都可以看到之前的一些数据,这就需要用到缓存了。那么我们就可以将某个对象直接写入...
  • qq_16628781
  • qq_16628781
  • 2017-04-03 11:12
  • 556

把Linux Ubuntu安装到U盘上

把ubuntu安裝到u盘上,照样可以引导系统开机(bios要具备u盘开机引导的能力),并享受飚车的感觉.并且可以随时拔下来到任何电脑上直接插上u盘就使用令人目眩的ubuntu. 当然了,你的u盘至少要4G,安装方法很简单,我简单的说一下步骤. 安装到u盘的方法: 1,首先准备大于4G容量的U盘...
  • sibang
  • sibang
  • 2014-08-21 16:40
  • 792

java中类加载、类加载器详细解析

1、一个类编译完后会生成一个class文件。Class文件经历以下过程进行执行: 1、加载:加载class文件的信息加载到内存中。由硬盘到内存的迁移。   将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象, 用来封装类在方法区内的数据结构。类加载的追中产...
  • liyantianmin
  • liyantianmin
  • 2015-12-13 00:10
  • 414
    个人资料
    • 访问:562883次
    • 积分:6062
    • 等级:
    • 排名:第4952名
    • 原创:150篇
    • 转载:0篇
    • 译文:1篇
    • 评论:216条
    最新评论