序列化反序列化流、打印流

ObjectOutputStream(序列化流)

  ObjectOutputStream是序列化流,可以将Java程序中的对象写到文件中。

  ObjectOutputStream 构造方法:

    ObjectOutputStream(OutputStream out):参数要传递字节输出流。

  ObjectOutputStream写对象的方法(特有方法):

    void writeObject(Object obj): 向文件中写对象。

  ObjectOutputStream 的使用步骤:

    创建序列化流,用来写。

    调用 writeObject 方法,写对象。

    释放资源。

  注意: 要使用序列化流向文件中写的对象,必须实现 Serializable 接口。

  例:

 1 // 创建一个Person对象
 2 Person p=new Person("大灰狼",18);
 3 //明确目的地
 4 FileOutputStream fos=new FileOutputStream("D:\\demo0723\\person.txt");//不能续写true
 5 //创建序列化流
 6 ObjectOutputStream oos=new ObjectOutputStream(fos);
 7 //将对象写入文件中
 8 oos.writeObject(p);
 9 //释放资源
10 oos.close();

ObjectInputStream(反序列化流)

  ObjectInputStream 是反序列化流, 可以将文件中的对象读取到 Java 程序中。

  ObjectInputStream 的构造方法:

    ObjectInputStream(InputStream in):参数要传递字节输入流。

  ObjectInputStream 读取对象的方法(特有的方法):

    Object readObject(): 从文件中读取对象,并将该对象返回。

  反序列化流的使用步骤:

    创建 ObjectInputStream 反序列化流。

    调用 readObject 方法,读取对象。

    释放资源。

  注意:调用 readObject 方法读取对象时,对象所对应的类不存在,那么会报错(ClassNotFoundException)

 1 public static void read() throws ClassNotFoundException, IOException{
 2         //明确数据源
 3         FileInputStream fis=new FileInputStream("D:\\demo0723\\person.txt");
 4         //创建反序列化刘
 5         ObjectInputStream ois=new ObjectInputStream(fis);
 6         //从person.txt中将对象读取出来
 7         Person p=(Person)ois.readObject();
 8         System.out.println(p);
 9         //释放资源
10         ois.close();
11     }

  特殊情况:

    被 static 修饰的成员变量无法序列化,无法写到文件。

    如果不希望某个成员变量写到文件,同时又不希望使用 static 关键字, 那么可以使用 transient。transient 关键字表示瞬态,被 transient 修饰的成员变量无法被序列化。

    如果想要修改序列化后的文件 ,也可以加serialVersionUID,使序列化时生成的值与反序列化时值一致。

  

打印流:

  打印流是输出信息最方便的类,注意包含字节打印流PrintStream和字符打印流:PrintWriter。打印流提供了非常方便的打印功能,

  可以打印任何类型的数据信息,例如:小数,整数,字符串。

  打印流的特点:

    不负责数据源,只负责数据目的

    为其他输出流,添加功能

    永远不会抛出IO异常,但是可能抛出别的异常

  特有的方法:print()和println()方法,System.out.print()方法可以打印任何数据类型。

  PrintSteam构造方法接收:

File类型、字符串文件名、字节输出流OutputStream

  例:

//明确目的地
        FileOutputStream fos=new FileOutputStream("D:\\demo0723\\print.txt");
        //创建打印流
        PrintStream ps=new PrintStream(fos);
        //输出
        ps.print("你好");
        ps.print(true);
        ps.println(123);
        //释放资源
        ps.close();

  PrintWriter构造方法接收:

File类型、字符串文件名、字节输出流OutputStream、字符输出流Writer

  例:

 1 //明确目的地
 2     FileWriter fw=new FileWriter("D:\\demo0723\\print.txt",true);  //续写
 3     //创建字符打印流
 4     PrintWriter pw=new PrintWriter(fw,true);//自动刷新
 5     //输出
 6     pw.println(false);
 7     pw.println("大灰狼");
 8     pw.print(1.2);
 9     //释放资源
10     pw.close();

 

原文地址:https://www.cnblogs.com/zhai113/p/11757853.html

时间: 2024-11-05 15:49:45

序列化反序列化流、打印流的相关文章

转换流,打印流,序列化

微信公众号:菜鸟永恒 第11天 IO流今日内容介绍?    转换流?    序列化流?    打印流?    Properties今日学习目标?    能够阐述编码表的意义?    能够使用转换流读取指定编码的文本文件?    能够使用转换流写入指定编码的文本文件?    能够使用Properties的load方法加载文件中配置信息?    能够使用Properties的store方法保存配置信息到文件?    能够说出打印流的特点?    能够使用序列化流写出对象到文件?    能够使用反序列

java学习--基础知识进阶第十天--标准输入流 & 转换流 & 打印流、对象操作流 、Properties集合

今日内容介绍 u  标准输入流 & 转换流 & 打印流 u  对象操作流 u  Properties集合 第1章 标准输入流 & 转换流 & 打印流 1.1 标准输入输出流 public static final InputStream in:标准输入流 public static final PrintStream out:标准输出流 package com.itheima_05; /* * 标准输入输出流: public static final InputStream

第1章 标准输入流 & 转换流 & 打印流

1.1 标准输入输出流public static final InputStream in:标准输入流public static final PrintStream out:标准输出流 package com.itheima_05; /* * 标准输入输出流: public static final InputStream in:字节输入流,用来读取键盘录入的数据 public static final int x; InputStream is = System.in; Scanner sc

IO【转换流,打印流,序列化】

编码: 把看的懂,变成看不懂的 String str = "中国"; byte[] bytes = str.getBytes(); System.out.println(Arrays.toString(bytes));解码: 把看不懂的内容,变成能看懂的 String s = new String(bytes); System.out.println(s); java.io.OutputStreamWriter extends Writer OutputStreamWriter:转换流

Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)

1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出流写入稍后由数据输入流读取的数据. · DataOutputStream:数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中.然后,应用程序可以使用数据输入流将数据读入. package datastreamdemos; import java.io.*; /** * Created b

JAVA笔记12__字节、字符缓冲流/打印流/对象流/

/** * !!:以后写流的时候一定要加入缓冲!! * 对文件或其它目标频繁的读写操作,效率低,性能差. * 缓冲流:好处是能更高效地读写信息,原理是将数据先缓冲起来,然后一起写入或读取出来. * * BufferedInputStream:字节缓冲流(有一个内部缓冲区数组,用于缓冲数据) */ public class Main { public static void main(String[] args) { input(); output(); } /** * 使用字节缓冲流进行读取操作

IO流之Properties(String键值对)+序列流+打印流+commons-IO(最终流程)

学了这么多全是给他用的之Commons 用这个的前提需要导包, ①创建lib文件夹 ②将下载的commos-io.jar拷贝到lib文件夹 ③右键点击commons-io.jar,Build Path→Add to Build Path 然后介绍两个工具类 1.2 FilenameUtils 这个工具类是用来处理文件名,他可以轻松解决不同操作系统文件名称规范不同的问题 l 常用方法: getExtension(String path):获取文件的扩展名: getName(String filen

IO流---打印流

package 打印流; import java.io.FileNotFoundException; import java.io.PrintWriter; public class Demo1 { public static void main(String[] args) { PrintWriter pw = null; try { pw = new PrintWriter("c.txt"); pw.print("aaa"); pw.print('c'); pw

字符流+打印流

一.步骤 public class Copy {//打印流+缓冲流 最有效率 public static void main(String[] args) throws IOException { //明确数据源 FileReader f=new FileReader("D:\\java1018\\println.txt"); //添加缓冲流 BufferedReader br=new BufferedReader(f); //明确目的地 FileWriter fw=new FileW

Properties-转换流-打印流-序列化和反序列化-Commons-IO工具类

一.Properties 类(java.util)     概述:Properties 是一个双列集合;Properties 属于map的特殊的孙子类;Properties 类没有泛型,properties集合的key和value都是固定的数据类型(String),该集合提供了一些特有的方法存取值,是唯一一个可以与IO流相结合的集合; 定义:public class Properties extends Hashtable