JAVA_IO
发布日期:2021-05-04 13:33:18 浏览次数:24 分类:精选文章

本文共 3462 字,大约阅读时间需要 11 分钟。

==> 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				+ "]";	}}

结果展示:

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

上一篇:REPL是什么?
下一篇:JAVA_异常处理

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月11日 23时06分47秒