Io流大总结

              字节流结构

 输入流:java

ObjectInputStream:从文件中读取对象数组

FileInputStream:从文件中输入(读)字节spa

BufferedInputStream:底层有缓冲数组,在不定义数组的状况下,提升输入(读)效率对象

 

输出流:blog

ObjectOutStream:接口

经一个对象写入文件资源

FileOutputStream:字符串

将数据输出(写)文件it

BufferedOutputStream:io

底层有缓冲数组,再不定义数组状况下,提升输出(写)效率

             字符流结构图

 

输入流:

FileReader:

输入(读)文本文件的数据

BuffereReader:

底层有缓冲数组,在不定义数组状况下,提升输入(读)效率,同时有特有readLine()方法,一次能够读取一整行数据

InputStreamReader:

是从字节流到字符流的桥梁:它读取字节,并使用指定的charset将其解码为字符.它使用的字符集能够有名

称指定,也能够被明确指定,或者使用平台的默认字符集

 

输出流:

FileWriter:

将数据输出(写)到文本文件

BufferedWriter:

底层有缓冲数组,再不定义数组的状况下,提升写入效率.同时有特有newLine()方法输出跨平台换行

OutputStreaWriter:

是从字符流到字节流的桥梁:使用指定的charset将其解码为字节,它使用的字符集能够是由名称指定,

也能够被明确指定,或者能够接受平台默认的字符集

              字节流经常使用方法

 

FileInputStream,BufferedInputStream:

  • int read():读取一个字节

  • int read(byte[]b):读取一个字节数组

  • void close:释放文件(关流)

FileOutputStream、BufferedOutputStream:

  • void write(int b):写入一个字节

  • void write(byte[]b):写入一个字节数组

  • void write(byte[]b,int off(开始位置),int len(个数)):写入一个字节数组,从off开始,写入len个

  • void close:释放文件(关流)

ObjectInputStream:

  • Object readObject():读取一个对象

  • void close:释放文件(关流)

ObjectOutputStream:

  • void writeObject(Object obj):写入一个对象

  • void close:释放文件(关流)

               字符流经常使用方法

 

FileReader、BufferedReader、InputStreamReader:

  • int read():一次读取一个字符

  • int read(char[]char):一次读取一个字符数组

BufferedReader特有方法:

  • String readLine():读取一整行

FileWriter、BufferedWriter、OutputStreamWriter:

  • void write():写入一个字符

  • void write(char[]char):写入一个字符数组

  • void write(char[]char,int off(开始位置),int len(个数)):写入一个数组的一部分,开始位置off,写入个数len

  • void write(String str):写一个字符串

  • void write(String str,off(开始位置),len(个数)):写一个字符串一部分,开始位置off,写入个数len

  • void flush():刷新流

  • void close():释放文件

BufferedWriter特有方法:

  • void newLine:跨平台通用换行

Properties集合与Io流集合的方法:

  • void load(Reaner reader):将字符输入流中的数据加载到Properties对象中

  • void store(Writer writer,String comments):将Properties集合中的数据存入字符输出流

              注意事项

 

  • flush():

  刷新流,以后还能够继续写数据

  • close():

  关闭流,释放资源,可是关闭以前会先写出数据.一旦关闭,就不能再写数据了

  • 关流操做应定要放在try-catch-finally中的finally中:

    • 被finally控制的语句必定会被执行,无论有没有异常,也无论异常有没有被捕获

    • 即便finally中包含continue,break,return,try块结束后,finally块也依旧会执行

  • 使用字节输出流注意事项:

    • 若是文件不存在就建立

    • 写整数时,实际写出的是整数对应码表的字母

    • 使用完必须释放资源

    • 表示文件的路径名称必须存在

  • 使用字符输出(写出)流注意事项:

    • 建立字符输出流对象时若是文件不存在就建立,存在就清空

    • 写数据时:

      • 写int就是写的ASCLL码表中对应的字节

      • 写字符串就是将字符串原样输出

    • 必须释放资源

  • 使用字符流(输入)读取数据注意事项:

    • 文件必需要存在

    • 必须释放资源

  • 对象操做流注意事项:

    • 若是想要这个类能被序列化,那么这个类必须实现一个接口Serializable

    • Serializable是一个标记接口,实现给接口不须要重写任何方法

    • 静态成员不加transient关键字都会被序列化

    • serialVersionUID 指定序列号,能够避免javabean修改,形成序列号改变运行时候出错

  • 数据读取末尾的输出标记:

    • 字符,字节读取到文件结尾会返回-1

    • 读取一整行到文件末尾会返回null

    • 读取对象到末尾会报EOFException

  • File[]listFiles()注意点:

    • File指向不存在的,返回null

    • 存在的是文件:返回null

    • 存在的是文件夹正常输出,若是是空文件夹,返回长度为0的File数组

    • 权限问题没有访问权限,返回null

    注意:返回为null的状况,能够有效避免遍历返回数组时候出现运行时异常

相关文章
相关标签/搜索