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();
		}
	}

}
控制台打印如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java代码实现: ```java import java.io.*; public class FileIO { public static void main(String[] args) { String poem = "登高\n" + "唐代:杜甫\n" + "风急天高猿啸哀,\n" + "渚清沙白鸟飞回。\n" + "无边落木萧萧下,\n" + "不尽长江滚滚来。\n" + "万里悲秋常作客,\n" + "百年多病独登台。\n" + "艰难苦恨繁霜鬓,\n" + "潦倒新停浊酒杯。\n\n"; String english = "The quick brown fox jumps over the lazy dog.\n\n"; String studentInfo = "学号:123456789\n姓名:张三\n"; // 文件 try { File file = new File("d:/InFile.txt"); FileWriter writer = new FileWriter(file); writer.write(poem); writer.write(english); writer.write(studentInfo); writer.close(); } catch (IOException e) { e.printStackTrace(); } // 读取文件并输出内容 try { File file = new File("d:/InFile.txt"); FileReader reader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(reader); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } // 复制文件 try { File inFile = new File("d:/InFile.txt"); File outFile = new File("d:/OutFile.txt"); FileReader fileReader = new FileReader(inFile); BufferedReader bufferedReader = new BufferedReader(fileReader); FileWriter fileWriter = new FileWriter(outFile); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); String line; while ((line = bufferedReader.readLine()) != null) { bufferedWriter.write(line); bufferedWriter.newLine(); } bufferedReader.close(); bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 代码实现了以下功能: 1. 将一首唐诗和一段英文表达以及学号和姓名入到 `d:/InFile.txt` 文件。 2. 读取 `d:/InFile.txt` 文件的内容并输出。 3. 将 `d:/InFile.txt` 文件的内容复制到 `d:/OutFile.txt` 文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值