java基础之流和序列化
2017-07-25 20:29
176 查看
1.1)InputStream
void close()
关闭此输入流并释放与该流关联的所有系统资源。
abstract int read()
从输入流中读取数据的下一个字节。
int read(byte[] b)
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
2).OutputStream
void close()
关闭此输出流并释放与此流有关的所有系统资源。
void flush()
刷新此输出流并强制写出所有缓冲的输出字节。
void write(byte[] b)
将 b.length 个字节从指定的 byte 数组写入此输出流。
abstract void write(int b)
将指定的字节写入此输出流。
注意点
1)读取文件的时候-文件必须存在
2)写出文件的时候-文件可以不存在
3.copy文件
* Copy数据
a)创建输入输出数据源
b)通过数据源创建输入输出流
c)通过输入流循环的读取数据
d)通过输出流循环的写出数据
e)刷新流flush(如果需要数据-立即传入到数据源时,则需要调用)
f)关闭流close
关闭多个流
a)每个流都要关闭
b)先打开的后关闭
4.缓冲字符流-处理流
* bufferedReader缓冲字符输入流
* 增加功能
* a)有缓冲区-提高性能
* b)新增api:需要使用新增api-不能面向reader编程
* readLine 读一行字符数据
*
* bufferedWriter缓冲字符输出流
* a)有缓冲区-提高性能
* b)新增api:需要使用新增api-不能面向Writer编程
* newLine 写出一个换行符
5.缓冲流-》处理流(装饰模式-》装饰对象)-不能直接连数据源
* 作用:提高输入输出的性能(针对[大量数据]读取和写出)
*
* ——》缓冲字节流
* bufferdinputStream:缓冲字节输入流
* bufferdoutputStream:缓冲字节输出流
6.计算机的文件
*
* a)字符文件:文本编辑器打开可以看懂字符的文件
* 1)文本文件
* b)字节文件:文本编辑器打开不能看懂字符的文件
* 2)声音文件
* 3)视频文件
* 4)图片文件...
*
* 流分类
* 1)字节流:可以处理:字符文件(需求手动编码解码-可能文字被分割),字节文件
* 2)字符流:可以处理:字符文件(自动编码解码)
*
* 1)reader
abstract void close()
关闭该流并释放与之关联的所有资源。
int read()
读取单个字符。
int read(char[] cbuf)
将字符读入数组。
2)writer
abstract void close()
关闭此流,但要先刷新它。
abstract void flush()
刷新该流的缓冲。
void write(char[] cbuf)
写入字符数组。
write(int c)
void write(String str)
写入字符串。
7.FileReader读取字符数据-》默认采用当前java文件对应的字符集进行解码
*
* FileWriter写出字符数据-》默认采用当前java文件对应的字符集进行编码
*
* -->读取和写出其他字符集的字符文件
* --》可以通过【转换流】完成
8.转换流(字节流———》字符流)
主要作用:把字节【整数】流转换为字符【字符】流(不能字符转字节流!-设置编码解码字符集)
1、OutputStreamWriter
a)可以设置编码字符集
b)进行字节输出流转字符输出流
2、InputStreamReader:字节输入流---转--》字符输入流
a)可以设置解码字符集
b)进行字节输入流转字符输入流
注意点
1)转换流都带有缓冲区-不能设置大小,输出数据一定要刷新
9.打印流(处理流,也是节点流)
* printStream ,printWriter(和printStream类似)
*
* 增加的功能: 把【程序的数据】【基本类型,引用类型】以【字符的形式】 写出到【数据源】
*
* 打印流-》 数据源的数据-》是字符数据-我们可以看懂
*
* 序列化的流-》 数据源的数据-》是字节数据-我们不能看懂
* 怎么选择
* 1)数据输出到数据源-长久存储-》序列化的流
* 2)数据输出到数据源-给用户看-》打印流
*
* 新增api:-》不能面向outputstream编程
* 1)print:把【基本类型,引用类型】写出去
* 2)println:把【基本类型,引用类型】写出去,再写出换行
*
* 注意点
* 1)基本类型写出的字符串-》值对应的字符串
* 2)引用类型写出的字符串-》toSring的字符串
10.序列化概念
a)序列化(输出):把程序中的数据 (基本类型,引用类型)以【字节数据】写出 到一个数据源
b)反序列化(输入):把数据源序列化的数据 【字节数据】 读取到 程序中的数据(基本类型,引用类型)
例子:
1)游戏本地存档
2)网络传输,java里非(byte和char)的其他类型的数据。
3)hibernate框架底层使用了
*
*
*
* 序列化的流(处理流)
*
* --》都新增api-不能面向超类型编程
*
* a)处理 【基本类型】【字符串】数据
* 1)DataInputStream-》反序列化(输入)
* 新增api:
* read基本类型
* readUTF
* 2)DataOutputStream-》序列化(输出)
* 新增api:
* write基本类型
* writeUTF 写字符串
*
*
* b)处理 【基本类型】【引用类型】数据
*
* 1)ObjectInputStream
* 新增api:
* read基本类型
* readUTF
* readObject
* 2)ObjectOutputStream
* 新增api:
* write基本类型
* writeUTF
* writeObject
*
*
* 注意点
* 1)序列化和反序列化处理数据的顺序要一致-》否则可能出现EOFException
b)处理 【基本类型】【引用类型】数据
*
* 1)ObjectInputStream
* 新增api:
* read基本类型
* readUTF
* readObject
* 2)ObjectOutputStream
* 新增api:
* write基本类型
* wr
4000
iteUTF
* writeObject
*
*
* 注意点
* 1)序列化和反序列化处理数据的顺序要一致-》否则可能出现EOFException
void close()
关闭此输入流并释放与该流关联的所有系统资源。
abstract int read()
从输入流中读取数据的下一个字节。
int read(byte[] b)
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
2).OutputStream
void close()
关闭此输出流并释放与此流有关的所有系统资源。
void flush()
刷新此输出流并强制写出所有缓冲的输出字节。
void write(byte[] b)
将 b.length 个字节从指定的 byte 数组写入此输出流。
abstract void write(int b)
将指定的字节写入此输出流。
注意点
1)读取文件的时候-文件必须存在
2)写出文件的时候-文件可以不存在
3.copy文件
* Copy数据
a)创建输入输出数据源
b)通过数据源创建输入输出流
c)通过输入流循环的读取数据
d)通过输出流循环的写出数据
e)刷新流flush(如果需要数据-立即传入到数据源时,则需要调用)
f)关闭流close
关闭多个流
a)每个流都要关闭
b)先打开的后关闭
4.缓冲字符流-处理流
* bufferedReader缓冲字符输入流
* 增加功能
* a)有缓冲区-提高性能
* b)新增api:需要使用新增api-不能面向reader编程
* readLine 读一行字符数据
*
* bufferedWriter缓冲字符输出流
* a)有缓冲区-提高性能
* b)新增api:需要使用新增api-不能面向Writer编程
* newLine 写出一个换行符
5.缓冲流-》处理流(装饰模式-》装饰对象)-不能直接连数据源
* 作用:提高输入输出的性能(针对[大量数据]读取和写出)
*
* ——》缓冲字节流
* bufferdinputStream:缓冲字节输入流
* bufferdoutputStream:缓冲字节输出流
6.计算机的文件
*
* a)字符文件:文本编辑器打开可以看懂字符的文件
* 1)文本文件
* b)字节文件:文本编辑器打开不能看懂字符的文件
* 2)声音文件
* 3)视频文件
* 4)图片文件...
*
* 流分类
* 1)字节流:可以处理:字符文件(需求手动编码解码-可能文字被分割),字节文件
* 2)字符流:可以处理:字符文件(自动编码解码)
*
* 1)reader
abstract void close()
关闭该流并释放与之关联的所有资源。
int read()
读取单个字符。
int read(char[] cbuf)
将字符读入数组。
2)writer
abstract void close()
关闭此流,但要先刷新它。
abstract void flush()
刷新该流的缓冲。
void write(char[] cbuf)
写入字符数组。
write(int c)
void write(String str)
写入字符串。
7.FileReader读取字符数据-》默认采用当前java文件对应的字符集进行解码
*
* FileWriter写出字符数据-》默认采用当前java文件对应的字符集进行编码
*
* -->读取和写出其他字符集的字符文件
* --》可以通过【转换流】完成
8.转换流(字节流———》字符流)
主要作用:把字节【整数】流转换为字符【字符】流(不能字符转字节流!-设置编码解码字符集)
1、OutputStreamWriter
a)可以设置编码字符集
b)进行字节输出流转字符输出流
2、InputStreamReader:字节输入流---转--》字符输入流
a)可以设置解码字符集
b)进行字节输入流转字符输入流
注意点
1)转换流都带有缓冲区-不能设置大小,输出数据一定要刷新
9.打印流(处理流,也是节点流)
* printStream ,printWriter(和printStream类似)
*
* 增加的功能: 把【程序的数据】【基本类型,引用类型】以【字符的形式】 写出到【数据源】
*
* 打印流-》 数据源的数据-》是字符数据-我们可以看懂
*
* 序列化的流-》 数据源的数据-》是字节数据-我们不能看懂
* 怎么选择
* 1)数据输出到数据源-长久存储-》序列化的流
* 2)数据输出到数据源-给用户看-》打印流
*
* 新增api:-》不能面向outputstream编程
* 1)print:把【基本类型,引用类型】写出去
* 2)println:把【基本类型,引用类型】写出去,再写出换行
*
* 注意点
* 1)基本类型写出的字符串-》值对应的字符串
* 2)引用类型写出的字符串-》toSring的字符串
10.序列化概念
a)序列化(输出):把程序中的数据 (基本类型,引用类型)以【字节数据】写出 到一个数据源
b)反序列化(输入):把数据源序列化的数据 【字节数据】 读取到 程序中的数据(基本类型,引用类型)
例子:
1)游戏本地存档
2)网络传输,java里非(byte和char)的其他类型的数据。
3)hibernate框架底层使用了
*
*
*
* 序列化的流(处理流)
*
* --》都新增api-不能面向超类型编程
*
* a)处理 【基本类型】【字符串】数据
* 1)DataInputStream-》反序列化(输入)
* 新增api:
* read基本类型
* readUTF
* 2)DataOutputStream-》序列化(输出)
* 新增api:
* write基本类型
* writeUTF 写字符串
*
*
* b)处理 【基本类型】【引用类型】数据
*
* 1)ObjectInputStream
* 新增api:
* read基本类型
* readUTF
* readObject
* 2)ObjectOutputStream
* 新增api:
* write基本类型
* writeUTF
* writeObject
*
*
* 注意点
* 1)序列化和反序列化处理数据的顺序要一致-》否则可能出现EOFException
b)处理 【基本类型】【引用类型】数据
*
* 1)ObjectInputStream
* 新增api:
* read基本类型
* readUTF
* readObject
* 2)ObjectOutputStream
* 新增api:
* write基本类型
* wr
4000
iteUTF
* writeObject
*
*
* 注意点
* 1)序列化和反序列化处理数据的顺序要一致-》否则可能出现EOFException
相关文章推荐
- Java序列化基础事项回顾
- JAVA-基础(六) Java.serialization 序列化
- java 基础语法(序列化&文本数据读写)
- Java基础(15):IO流—掌握对象序列化和反序列化操作
- java培训:Java对象序列化使用基础
- 介绍Java对象序列化使用基础
- JAVA序列化基础知识Serializable与Externalizable的区别(改变默认的序列化/反序列化行为)
- java基础愚见之序列化(Serializable)
- (java 基础知识)java序列化和反序列话总结
- JAVA基础再回首(二十三)——操作基本数据类型的流、内存操作流、打印流、随机访问流、合并流、序列化流
- Java基础知识之系统命令调用、序列化、JDO、匿名内部类
- 黑马程序员----JAVA基础之序列化与反序列化
- java教程之对象序列化使用基础示例详解
- 13.Java 基础 - 序列化
- Java基础学习总结——Java对象的序列化和反序列化
- Java基础之数组序列化、反序列化 小发现(不知道 是不是有问题)
- java学习——java基础(九)之序列化
- I学霸官方免费教程四十六 :Java基础之序列化和反序列化
- 关于Java基础中流的概述及序列化
- Java 7之基础 - 序列化与反序列化