• Io流总结


    IO

    一串流动的数据   从数据源流动至目的地      以程序为中心     

    分类

           流向              输入流   输出流

           操作单元       字节流   字符流

           功能              节点流(数据直接从数据源到目的地)

    功能流(经过包装)

    close()方法需要后接入的先关闭

    字节流(万能流)

    字节输入流   InputStream        流向:输入流  功能:节点流  自身为抽象类

           FileInputStream文件输入流

                  从文件中获取输入字节

    构造器

                         FileInputStream(File对象) FileInputStream(String地址)

                  方法

                         read()                   每次读入一个字节 输出int字节(char类型)

                         read(byte[ ] b)     每次读入一个byte数组长度的字节数据 

    输出int表示读入字节个数,若无返回-1

    通过byte数组对数据进行操作

    byte数组的长度通常设置为1024的倍数

                         read(byte[ ] b, int off, int len)  选择读取位置和长度

                         close()                  关闭

                  结构步骤以及循环多次获取数据的代码

    字节输出流   OutputStream     流向:输出流  功能:节点流  自身为抽象类

           FileOutputStream文件输出流

                  构造器

                         FileOutputStream (File对象| String地址)

                         FileOutputStream (File对象| String地址, boolean append) 是否接续写入

                         (会自动创建文件,但不会自动创建父文件夹)

                  方法

                  void write(byte date);          写入单个字节

                  void write(byte[ ] date)     写入byte数组,能够指定起始位置和长度

                                                            byte数组的长度一般设为1024的倍数

                         flush()                        刷新,继承自父类

                         close()                         关闭

                  结构步骤

    复制文件夹

           不能把文件复制到源文件所在路径

           目标路径不能为源文件的子路径

           目标文件的父路径若不存在,需要先创建目标文件的父路径

    字符流

    只能操作纯文本   节点流          txt文件html文件

    字符输入流

    Rader(抽象父类)->InputStreamReader->FileReader(文件字符输入流)

           FileReader

           构造器

                  FileReader(File对象|String路径)

           方法(均继承自父类)

                  read()                                 单个字符读取

                  read(char[])                       字符数组读取      字符数组长度可设为1024的倍数

                  read(char[],int off, int len) 字符数组读取并指定起始和长度

                         返回读取个数,若无读取返回-1

           结构步骤

    字符输出流

    Writer(抽象父类)-> OutputStreamWriter->FileWriter(文件字符输出流)

           FileWriter

           构造器

                  FileWriter(File对象|String路径)

                  FileWriter(File对象|String路径, boolean append)

    是否采用接续写入 不影响本次输入

           方法(均继承自父类)

                  writer(int)                                  写入单个字符

                  writer(char[ ])                           写入字符数组

                  writer(char[ ], int off , int len)   写入字符数组并指定起始和长度

                  writer(String)                           写入字符串

                  writer(String , int off , int len) 写入字符串并指定起始和长度

    flush()                                      刷新,继承自父类

                  close()                                       关闭

           结构步骤

    缓冲流

    用于增强传输功能和效率

    1字节缓冲流(无重新改写方法)

                  字节写入缓冲流   BufferedInputStream

                  字节输出缓冲流   BufferedOutputStream

                  通过构直接使用,直接嵌套在字节流外部,方法继承了父类

    父类引用=new BufferedInputStream(new FileInputStream(File对象|Stream地址))

    父类引用=new BufferedOutputStream(new FileOutputStream(File对象|Stream地址))

          

    2字符缓冲流

           通过内部嵌套字符流实现   具备字符流原有方法

           字符读取缓冲流

                  BufferedReader   新方法 readLine()读取一行

                  自身引用=new BufferedReader(new FileReader(File对象|Stream地址))

           字符写入缓冲流

                  BufferedWriter    新方法 writerLine()写入换行

                  自身引用=new BufferedWrieter(new FileWrieter(File对象|Stream地址))

    基本数据类型流

    适用字节输入流

    1用于读写带有基本数据类型和String类型的数据

           2构造参数为字节流或字节缓冲流

           3存在重写方法,需要通过自身引用接收

    读取流DataInputStream(InputStream)    

           新增方法(读取各类数据)

                  readInt()        readdouble()         readBoolean()       readUTF()字符串

    写入流DataOutputStream(OutputStream)

           新增方法(写入各类数据)

                  writerInt(int)  writerDouble(double)   writerBoolean(boolean)      writerUTF(String)

    注意:读取写入顺序

    对象流

    序列化:将对象信息转换为可存储或者可传输的信息格式

    对象流(先序列化后反序列化)

           序列化输出流      ObjectOutputStream         

           反序列化输入流   ObjectInputStream            

           构造方法的参数均为字节流或字节流的缓冲流

    1序列化输出流 ObjectOutputStream out=

    new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(File对象)));

           新增方法

           writer数据类型(对应类型的数据)     对各类数据写入

           writerObject(Object)                         将对象写入

           writerObject(数组)                            将数组写入

    2反序列化输入流 ObjectInputStream in=

    new ObjectInputStream(new BufferedInputStream(new FileInputStream(File对象)));

           新增方法

           read数据类型(对应类型的数据)       读取各类数据

           writerObject(Object)                         读取对象信息

           writerObject(数组)                            读取数组

    3能够被序列化的对象

           实现了空接口 java.io.Serializable   或父类已经实现了Serializable接口

           不需要序列化的属性 加transient修饰

    静态的内容不能被序列化  若使用原类对象接收,静态值为当前静态区中的内容

    转换流(了解)

           将字节流转为字符流使用(能够使用字符流的方法)

           构造器:

           InputStreamReader(InputStream,String charset)      参数为:字节流对象和编码格式

    OutputSteamWriter(OutputSteam,String charset)    参数为:字节流对象和编码格式

    可能出现乱码的情况:

    1.字符编码格式不统一

    2.缺少字节个数

     不同编码格式汉字所占字节大小:

    ISO-8859-1    1个字节

    GBK               2个字节

    GB2312         2个字节

    UTF-8            3个字节

  • 相关阅读:
    database homework1
    数据库基础
    MySQL操作
    [BZOJ 1305][CQOI2009]dance跳舞(网络流+二分答案)
    [BZOJ 1834][ZJOI2010]network 网络扩容(费用流)
    [BZOJ 3931][CQOI2015]网络吞吐量(SPFA+网络流)
    [BZOJ 3576][Hnoi2014]江南乐(博弈论)
    [BZOJ 1086][SCOI2005]王室联邦(贪心?树分块)
    [BZOJ 4765]普通计算姬(分块+树状数组)
    [BZOJ 4802]欧拉函数(Pollard_rho+Miller_Rabin)
  • 原文地址:https://www.cnblogs.com/javaxiaobu/p/11014003.html
Copyright © 2020-2023  润新知