对象的输入输出流的作用: 用于写入对象 的信息读取对象的信息。 对象的持久化。 比如:用户信息。
   
           ObjectInputStream   : 对象输入流
   
           ObjectOutPutStream  :对象输出流  
   
         对象输入输出出流的使用注意点:
       1.如果想将一个对象写入到磁盘中,那么对象所属的类必须要进行序列化实现Serializable接口,Serializable接口没有任何方法 ,是一个标记接口
       2.如果对象所属的类的成员变量发生改变,你在读取原来的对象是就会报错,如果想要解决报错,保证serialVersionUID是唯一。
       3.如果你不想将某些信息存入到磁盘 就可以同过transient关键字修饰成员变量
       4.如果一个类中引用了另外的一个类,那么另外的这个类也要实现Serializable接口。

package com.beiwo.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable; class Cat implements Serializable { private static final long serialVersionUID = 1L; // 保证所取对象信息唯一 String name;
public Cat(String name) {
// TODO 自动生成的构造函数存根
this.name = name;
} @Override
public String toString() {
// TODO 自动生成的方法存根
return "cat.name" + this.name;
}
} class Person implements Serializable { private static final long serialVersionUID = 1L; // 保证所取信息唯一 String name;
int age;
int id;
String sex;
// 如果不想把某些信息存入磁盘中 ,则需要通过transient关键字修饰成员变量
transient String password;
Cat cat;
// 构造方法
public Person(String name, int age, int id, String password, Cat cat){
this.name = name;
this.age = age;
this.id = id;
this.password = password;
this.cat = cat;
}
}
public class demo4 { /**
* @param args
* @throws IOException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws IOException, ClassNotFoundException {
// 调用方法
writeObject();
readObject();
}
// 读取数据到磁盘中
public static void readObject() throws IOException, ClassNotFoundException {
// TODO 自动生成的方法存根
// 找到目标文件
File file = new File("C:\\Users\\cdlx2016\\Desktop\\2\\cc.txt");
// 建立通道
FileInputStream inputStream = new FileInputStream(file);
// 创建对象输入流
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
// 读取数据
Person person = (Person)objectInputStream.readObject(); // 打印数据
System.out.println("name: " + person.name + " age: " + person.age + " id: " + person.id + " 密码:" + person.password + " cat: " + person.cat); // 关闭数据
objectInputStream.close(); } // 写入对象
private static void writeObject() throws IOException {
// 找到目标文件
File file = new File("C:\\Users\\cdlx2016\\Desktop\\2\\cc.txt");
// 建立通道
FileOutputStream fileOutputStream = new FileOutputStream(file);
// 创建对象输出流
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
// 创建对象
Person person = new Person("李四", 20, 1203, "369852", new Cat("大肥"));
// 写入数据
objectOutputStream.writeObject(person);
// 关闭流
objectOutputStream.close(); } }

java 对象输入输出流的更多相关文章

  1. (JAVA)从零开始之--对象输入输出流ObjectInputStream、ObjectOutputStream(对象序列化与反序列化)

    对象的输入输出流 : 主要的作用是用于写入对象信息与读取对象信息. 对象信息一旦写到文件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输入流:  Ob ...

  2. 对象输入输出流ObjectInputStream、ObjectOutputStream(对象序列化与反序列化)

    对象的输入输出流 : 主要的作用是用于写入对象信息与读取对象信息. 对象信息一旦写到文件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输入流:  Ob ...

  3. Day 18:SequenceInputStream、合并切割mp3、对象输入输出流对象

    SequenceInputStream用例题讲述用法 需求:1.把a.txt与b.txt 文件的内容合并 2.把a.txt与b.txt .c.txt文件的内容合并 import java.io.Fil ...

  4. java:利用java的输入/输出流将一个文件的每一行+行号复制到一个新文件中去

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  5. java io 输入输出流

    数据流分类: 流序列中的数据既可以是未经加工的原始二进制数据, 也可以是经一定编码处理后符合某种格式规定的特定数据. 因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字 ...

  6. 浅谈Java的输入输出流(转)

    Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象.在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输 ...

  7. Java:输入输出流 java.io包的层次结构

    1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...

  8. JAVA基础-输入输出流

    一,File类:文件的创建和删除 1.File(String pathname):pathname是指路径名称.用法 File file = new File("d:/1.txt " ...

  9. Java基础—输入输出流

    流的概念 在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流——输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分为节 ...

随机推荐

  1. bzoj1734 愤怒的牛

    Description Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stal ...

  2. Java_Array数组1

    package org.array.demo; /** * 数组可以看成一组相同属性的元素的集合 * 1.静态声明 * 静态声明的格式: * 数组类型[] 标识 = new 数组类型[数组长度]; * ...

  3. Eclipse启动tomcat,http://localhost:8080/无法访问的解决方法

    双击eclipse的Server打开配置页面,将server locations的选项改成第二项,然后把Destroy Path改成webapps,然后就可以了.如果是灰色的,没法进行修改,那么就要先 ...

  4. js简单弹出层、遮罩层

    <html> <head> <title>js简单弹出层</title> <style> /*阴影边框效果*/ .box-shadow-1 ...

  5. HDU 5686 斐波那契数列、Java求大数

    原题:http://acm.hdu.edu.cn/showproblem.php?pid=5686 当我们要求f[n]时,可以考虑为前n-1个1的情况有加了一个1. 此时有两种情况:当不适用第n个1进 ...

  6. AlertDialog错误

    Unable to add window token null is not for an application AlertDialog.Builder localBuilder = new Ale ...

  7. orm 语法 数据库连接、建表、增删改查、回滚、单键关联 、多键关联、三表关联

    1.数据库连接, #!usr/bin/env/python # -*- coding:utf-8 -*- # from wangteng import sqlalchemy from sqlalche ...

  8. win8环境安装.net3.5

    材料:光盘镜像(必须原版镜像) 1,以管理员身份运行CMD 2,打开镜像,找到盘符比如我的是G盘 3, 输入 X代表你的ISO镜像的盘符 dism.exe /online /enable-featur ...

  9. Entity Framework 中的in操作实例

    var listimportDataEOIResoults = importDataEOIResoults.Select(i => i.ProductSelectionId).ToList(); ...

  10. Mac Pro 16G 安装MyEclipse提示虚拟内存(为0)不够

    百度一下很多人都说开多一点程序,让程序占满内存,使其虚拟内存使用就能通过这一步骤,但这里有个更好一点的方案 通过执行: memory_pressure -l critical 用系统内存压力测试进程占 ...