您的位置:首页 > 编程语言 > Java开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: