
本文共 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 + "]"; }}
结果展示:

文件中保存的是对象:
发表评论
最新留言
关于作者
