Java基本笔记之IO操作
来源:互联网 发布:淘宝店铺页头怎么做 编辑:程序博客网 时间:2024/05/22 08:19
输入流输出流
概念:流是程序与外界进行交换的通道。程序通过输入流从数据源读取数据,通过输出流向目的源写入数据。
1. File类
文件和目录都通过File类来操作,File能新建,删除,重命名文件或目录。如果要访问文件本身,则使用输入,输出流。
2. Java的IO流
Java的IO流能够方便实现数据的输入/输出操作,在Java中把不同的输入/输出源(键盘,文件,网络连接等)抽象表述为“流”(stream),通过流的方式允许程序使用相同的方式来访问不同的输入/输出源。Stream是从起源到接收的有序数据。
3. 流的分类
1> 输入流和输出流
输入流:只能从中读取数据,而不能向其写入数据。
输出流:只能向其写入数据,而不能从中读取数据。
2> 字节流和字符流
字节流以字节为单位来处理输入/输出操作,数据单元是8位的字节;
字符流以字符为单位来处理输入/输出操作,数据单元是16位的字符。
字节流主要由InputStream和OutputStream作为基类,字符流主要由Reader和Writer作为基类。
3> 节点流和处理流
节点流:从/向特定的IO设备(如磁盘,网络)读/写数据的流;
处理流:用于对一个已存在的流进行连接或封装,通过封装后的流来实现数据读/写功能。
4> 缓冲流
缓冲流也是对节点流做一层包装,以提高IO设备的读写效率
5> 总结
使用处理流的典型思路是:使用处理流来包装节点流,程序通过处理流来执行输入/输出功能,让节点流与底层的IO设备、文件交互。
为了提高读写效率,可以在处理流和节点流之间加一层缓冲流,具体为: 处理流(缓冲流(节点流())) 。
节点流与处理流一个最大分别之处是:所有的节点流都是直接以物理IO节点作为构造器参数,而处理流的构造器参数不是物理节点,而是一个已经存在的流。
【注*】在使用处理流包装了底层的节点流之后,关闭输入/输出流资源时,只需关闭最上层的处理流即可,系统会自动关闭被该处理流包装的节点流。
4. RandomAccessFile是Java输入/输出流体系中功能最丰富的文件内容访问类,它可以读取文件内容,也可以向文件输出数据,而且支持随机访问的方式,可以直接跳转到文件的任何地方来读写数据。
5. 对象序列化
1> 对象序列化目的和意义
将实现序列化的Java对象转换成字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以备以后重新恢复成原来的对象。
对象的序列化(Serialize)指将一个Java对象写入IO流,对象的反序列化(Deserialize)则指从IO流中恢复该Java对象。
2> 需要满足的条件
如果需要让某个对象支持序列化机制,则必须让它的类是可序列化的(serializable)。为了让某个类是可序列化的,该类必须实现如下两个接口之一:
Serializable
Externalizable
3> 使用对象流实现序列化
一旦某个类实现了Serializable接口,该类的对象就是可序列化的,程序可以通过下面两个步骤来序列化该对象。
第一步:创建一个ObjectOutputStream,这个输出流是一个处理流,所以必须建立在其他节点流的基础之上
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.txt"));
第二步:调用ObjectOutputStream对象的writeObject()方法输出可序列化对象
oos.writeObject(objectName);
4> 从二进制流中恢复Java对象,需要用到反序列化。
第一步:创建一个ObjectInputStream输入流,这个输入流是一个处理流,必须建立在节点流的基础之上。
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.txt"));
第二步:调用ObjectInputStream对象的readObject()方法读取流中的对象,该方法返回一个Object类型的Java对象,如果程序知道该Java对象的类型,则可以将该对象强制类型转化成其真实的类型。
Object object = (Object)ois.readObject();
【注*】如果某个类的Field类型不是基本类型或String类型,而是另一种引用类型,那么这个引用类必须是可序列化的,否则拥有该类型的Field的类也是不可序列化的。
- Java基本笔记之IO操作
- java笔记-IO流-IO基本操作
- Java基础之基本IO操作
- java基本IO操作
- java学习之 io流的基本操作(1)
- 博客重启之:JAVA IO流基本操作一
- java学习之 io流的基本操作(2)
- java IO 之 DataStream 操作基本数据流对象
- java 基本的io操作
- Java IO 一些基本操作
- Java 基本的IO操作
- 025 Java 基本IO操作
- Java基础--IO基本操作
- Java IO流基本操作
- java基础之IO流--DataOutputStream(专门用于操作Java基本数据类型的IO流对象)
- 黑马程序员学习笔记之七(Java IO操作)
- Java学习笔记---IO操作
- java IO操作之IO流介绍
- POJ 2349 Prim
- mysql show操作
- Android学习进阶路线导航线路
- 前3软件来帮助你记录电脑工作,容易
- 分享一个Android版 仿QQ局域网即时通信软件(可发文件、语音、录音)
- Java基本笔记之IO操作
- 常用android adb命令记录
- 【读书笔记】Mining of massive datasets
- POJ 2240 Arbitrage (Bellman-Ford)
- HTML5 localStorage
- C语言 学习笔记
- 前7个Java应用程序开发方面的书籍对于有抱负的开发者
- 加倍你的利润Java软件开发
- mysql load操作