JAVA_IO

==> InputStream类:

该类是字节输入流的抽象类,定义了操作输入流的各种方法。
在这里插入图片描述

==>OutputStream类

该类是字节输出流的抽象类,定义了输出流的各种操作方法。
在这里插入图片描述

==>Reader类

该类是字符输入流的抽象类,定义了操作字符输入流的各种方法。
在这里插入图片描述

==>Writer类

Writer 类主要是用于解决字符输入流的类,它的地位和作用与Reader类在输出流的地位和作用是相同的,也是所有字符输出流的流类。
在这里插入图片描述

==>文件的字节输入输出流(FileInputStream ,FileOutputStream ):

程序在运行期间,大部分数据都是在内存中进行操作,当程序结束或关闭时,这些数据将完全消失,但是有些数据需要永久保存,例如程序的配置信息、日志信息等。使用文件输入输出流,可以和指定的文件建立关联,然后把需要永久保存的数据输出到文件中,程序在下次运行时,可以从文件中取回这些数据。

==>文件的字符输入输出流(FileReader ,FileWriter):

文件的字符输入输出流和字节输入输出流有相同的功能,但是传送数据的方式不一样,字节流以字节为单位传送数据,可以是任何类型的数据,例如文本、音频、视频、图片等;而字符流以字符为单位传送数据,只能传送文本类型的数据。

==>自己编写的小程序:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Cfio{ //表示控制台录入,写入到文件中的io

	public static void main(String[] args) {
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		byte[] bytes = new byte[50];//定义传递字节为50byte
		try {
			int readio = inputStream.read(bytes); //获取控制台输入的字节
			String iobyte =  new String(bytes); //byte字节转换为String
			System.out.println("您输入的数据为:"+iobyte.trim()); //在控制台输出输入的字节
			outputStream = new FileOutputStream(new File("d:/aa.txt")); //设置输出路径
			outputStream.write(bytes);//把字节输出到指定文件

			inputStream.close();//用完之后关闭输入流
			outputStream.close();//用完之后关闭输出流
		} catch (IOException e) {
			e.printStackTrace();
		}


	}

}

==> 对象序列化

程序运行时可能有需要保存的数据,对于基本数据类型,例如:int、float、char等可以简单的保存到文件中,程序下次启动时,可以在读取文件中的数据初始化程序。但是对于复杂的对象类型,如果需要永久保存,使用上述解决方法就会复杂一些,需要把对象中不同的属性分解为基本数据类型,然后分别保存到文件中,当程序再次运行时,需要建立新的对象,然后从文件中读取与对象有关的所有数据,再使用这些数据分别为对象的每个属性初始化。

Java的ObjectInput接口与ObjectOutput接口分别继承了DataInput接口和DataOutput接口,提供了对基本数据类型和对象序列化的方法。使用对象序列化功能可以非常方便的将对象写入输出流,或者从输入流读取对象数据。下面将介绍ObjectInput接口与ObjectOutput接口中定义的对象序列化和反序列化方法。

==>自己编写的小程序:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import java.io.Serializable;


public class ObjectSerializable {

	public static void main(String[] args) {

		try {                       // 将工人对象序列化

			Worker worker=new Worker();
			worker.setAge(27);
			worker.setName("飞龙");
			worker.setSex("男");
			FileOutputStream fout=new FileOutputStream("D:/aa.txt");//输出到这个文件
			ObjectOutputStream oops=new ObjectOutputStream(fout);//将要输出的内容序列化
			oops.writeObject(worker);//将序列化后的内容部输出到指定文件
		} catch (Exception e) {
			e.printStackTrace();
		}

		try{                        // 反序列化工人对象
			FileInputStream fis=new FileInputStream("D:/aa.txt");
			ObjectInputStream oi=new ObjectInputStream(fis);//将需要读入的内容反序列化
			Worker newWorker=(Worker) oi.readObject();//把放序列化后的数据强转为工人对象
			System.out.println("姓名:"+newWorker.getName());//通过工人对象中的get,set 方法进行调用工人的属性及方法。
			System.out.println("性别:"+newWorker.getSex());
			System.out.println("年龄:"+newWorker.getAge());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



class Worker implements Serializable {
	private String name;
	private String sex;
	private int age;

	public Worker() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Worker(String name, String sex, int age) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Worker [name=" + name + ", sex=" + sex + ", age=" + age
				+ "]";
	}
}


结果展示:

文件中保存的是对象:在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值