java实现写一个对象Dog到一个本地文件中D:/aaa.txt中,然后在把本地文件的那二进制码写回到我们的输入流中,然后用控制台打印出来。

java实现写一个对象Dog到一个本地文件中D:/aaa.txt中,然后在把本地文件的那二进制码写回到我们的输入流中,然后用控制台打印出来。

经常记错输入流和输出流分别对应读还是写,后来我是这样记忆的,都是以内存为基准点,内存拿一支笔,可以将东西写到磁盘的文本中。这样就知道了输出流,就是从内存写出东西。反之,输入流就是从外边读入内存。

任务一:输出流,写出到本地文件

第一步:首先new一个对象Dog我们需要将该对象从内存写出到磁盘文件中,我们就需要实现一个接口Serializeble,该接口是一个标记接口,不需要实现里面的方法。

概念1-对象的序列化(Serialize):指将一个对象写到io流中,对象的序列化目标是将java对象转化为字节序列,这些字节序列可以保存在磁盘上,或者通过网络传输,以备以后可以重新恢复该java对象

package InAndOut.Serializable;

import java.io.Serializable;

public class Dog implements Serializable{
private int id;
private String  name;
public Dog(int id,String name){
	System.out.println("这个是有参数的构造器");
	this.id=id;
	this.name=name;
}
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}

}

第二步:使用ObjectOutputStream流将一个person对象写入到磁盘文件中。由于输出流ObjectOutputStream是一个处理流,必须建立在其它结点流的基础上,这里是建立在FileOutputStream流基础上。

package InAndOut.Serializable;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class WriteObject {
	public static void main(String[] args) {
		ObjectOutputStream obos = null;//ObjectOutputStream这是一个处理流,必须要建立再其他流的基础上,
		try {
			obos = new ObjectOutputStream(new FileOutputStream("D:/aaa.txt"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Dog dog = new Dog(10, "ahuang");
		try {
			obos.writeObject(dog);
			System.out.println("成功将内存中的dog写出到D盘中的aaa.txt文本中了");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if (obos != null) {

					obos.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

	}
}

运行上边的main程序后,查看D盘下 的aaa.txt文本文件:



任务二:输入流,从本地文件写会:

任务二就是任务一的反向过程,我接下来就将这个文本的东西写回为我们的Dog对象,然后用控制台打印出来:

package InAndOut.Serializable;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class ReadObject {

	public static void main(String[] args) {
		ObjectInputStream ois = null;
		try {
			ois = new ObjectInputStream(new FileInputStream("D:/aaa.txt"));
			Dog dog = (Dog) ois.readObject();//这里我知道本身读回的对象是一个java对象,所以我可以强制转换
			System.out.println("狗的id是:" + dog.getId() + "   狗的name是:" + dog.getName());

		} catch (IOException | ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		try {
			if (ois != null) {
				ois.close();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
控制台打印如下:

猜你喜欢

转载自blog.csdn.net/handsome2013/article/details/80604895