java 对象输入输出流
对象的输入输出流的作用: 用于写入对象 的信息读取对象的信息。 对象的持久化。 比如:用户信息。
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 对象输入输出流的更多相关文章
- (JAVA)从零开始之--对象输入输出流ObjectInputStream、ObjectOutputStream(对象序列化与反序列化)
对象的输入输出流 : 主要的作用是用于写入对象信息与读取对象信息. 对象信息一旦写到文件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输入流: Ob ...
- 对象输入输出流ObjectInputStream、ObjectOutputStream(对象序列化与反序列化)
对象的输入输出流 : 主要的作用是用于写入对象信息与读取对象信息. 对象信息一旦写到文件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输入流: Ob ...
- Day 18:SequenceInputStream、合并切割mp3、对象输入输出流对象
SequenceInputStream用例题讲述用法 需求:1.把a.txt与b.txt 文件的内容合并 2.把a.txt与b.txt .c.txt文件的内容合并 import java.io.Fil ...
- java:利用java的输入/输出流将一个文件的每一行+行号复制到一个新文件中去
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- java io 输入输出流
数据流分类: 流序列中的数据既可以是未经加工的原始二进制数据, 也可以是经一定编码处理后符合某种格式规定的特定数据. 因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字 ...
- 浅谈Java的输入输出流(转)
Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象.在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输 ...
- Java:输入输出流 java.io包的层次结构
1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...
- JAVA基础-输入输出流
一,File类:文件的创建和删除 1.File(String pathname):pathname是指路径名称.用法 File file = new File("d:/1.txt " ...
- Java基础—输入输出流
流的概念 在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流——输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分为节 ...
随机推荐
- Express知识整理
开发实例 Express开发实例(1) —— Hello,world! Express开发实例(2) —— Jade模板引擎
- PHP之static静态变量详解(一)
什么是static静态变量?(以下为在C语言中的理解) 静态变量 类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该 区域中的数据在 ...
- PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload
1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $ ...
- 精简的网站reset 和 css通用样式库
参考链接:http://www.zhangxinxu.com/wordpress/2010/07/我是如何对网站css进行架构的/ reset.css body{ line-height:1.4; c ...
- ACM-ICPC代码模板
是不是感觉手中的模板都各有缺陷? 要找到好的模板就要集百家之所长, 我在这里贡献出我的代码模板丰富大家的积累. 我的模板能较好的与常见的模板形成互补. 赶快收藏吧,否则以后找不到就不好啦! 另外,想成 ...
- 二、CoreAnimation之寄宿图详解
在之前的图层树中我们知道,可以使用CALayer对象创建一些有背景颜色的图层,其实使用CALayer,不仅可以利用其展示背景颜色,还可以展示图片.而这些展示内容,其实就是CALayer的寄宿图.这一节 ...
- PyCharm LicenseServer 破解
在自己的云平台上部署了IntelliJIDEALicenseServer服务,理论上http://www.jetbrains.com的产品都可以使用,不过目前只测试了PyCharm. 大家也知道,Py ...
- 网页Loading效果
问题描述:由于项目要求在页面提交以及加载的时候,有短暂的卡顿,需要用loading过渡. 1.下一个页面加载的时候实现: base-loading.js //获取浏览器页面可见高度和宽度 var _P ...
- ImageView的scaleType详解
ImageView的ScaleType详 1. 网上的误解 不得不说很失望,到网上搜索了几篇帖子,然后看到的都是相互复制粘贴,就算不是粘贴的,有几篇还是只是拿着自己的几个简单例子,然后做测试,这种以一 ...
- AngularJS 表单
AngularJS 表单是输入控件的集合. HTML控件 以下 HTML input 元素被称为 HTML 控件: input 元素 select 元素 button 元素 textarea 元素 H ...