Java IO流

概述

广泛指对文件的读写操作

java的IO操作不仅仅是可以对文件进行读写,还可以对字符串,字节数组,对象,基本数据类型进行读写

操作分为按字节进行操作和按字符进行操作。当要求精度很高时,每一个字节都不能出错,比如在操作图片,视屏,音频等需要按字节流进行IO操作;之外的IO操作优先考虑字符,其效率要高点

InputStream(字节输入流)

实现类:

  FileInputStream

    文件字节输入流,作用于文件

    通过 new FileInputStream(File file) 创建

  ObjectInputStream

    作用于一个字节输入流,比如把一个文件(保存的是对象信息)反序列化成对象,必须实现Serializable接口

    通过 new ObjectInputStream(InputStream in) 创建

    通过readObject()返回对象

  ByteArrayInputStream

    字节数组输入流,作用于字节数组

    操作IO但不产生文件,在内存中进行,也叫内存字节输入流

    通过 new ByteArrayInputStream(byte[] buf) 创建

  BufferedInputStream

    缓冲字节输入流,作用于一个字节输入流

    通过 new BufferedInputStream(InputStream in) 创建

常用方法:

read();  //读取流的下一个字节
read(byte[] b);  //读取输入流并存在字节数组b中
read(byte[] b, int off, int len);  //读取输入流的部分并存在字节数组b中

OutputStream(字节输出流)

实现类:

  FileOutPutStream

    文件字节输出流,作用于文件,把内容输出到文件

    通过 new FileOutPutStream(File file) 创建,如果文件不存在会自动创建

    通过 new FileOutPutStream(File file, boolean) 创建的,可以在末尾进行追加内容,如果文件不存在自动创建

  PrintStream

    打印流,父类是FileOutPutStream,作用于文件或字节输出流

    通过 new PrintStream(File file) 创建的,可以把内容写入文件

    通过 new PrintStream(Output Stream out) 创建的,可以把内容写入一个输出流

    print() 参可以是多种类型,意味着这个流非常强大!

  ObjectOutputStream

    对象序列化流,作用于一个字节输出流

    用于把一个对象以二进制数据进行传输(写入文件,发送给别人),必须实现Serializable接口

    通过 new ObjectOutputStream(OutputStream out) 创建

    通过 writeObject(Object obj) 把对象写入

  ByteArrayOutputStream

    数组字节输出流,操作IO不产生文件,也叫内存字节输出流

  BufferedOutputStream

    缓冲字节输出流,作用于一个字节输出流

    通过 new BufferedOutputStream(OutputStream out) 创建

常用方法:

write(int b);  //把一个字节写入输出流
write(byte[] b);  //把一个字节数组写入输出流
write(byte[] b, int off, int len);  //把一个字节数组部分写入输出流

Reader(字符输入流)

实现类:

  FileReader

    文件字符输出流,把文件的内容写入流中,作用于文件

    通过 new FileReader(File file) 创建

  BufferedReader

    字符缓冲输入流,作用于一个字符输入流

    能直接读取字符串,这是所有流中唯一一个可以直接读取字符串的流

    通过 new BufferedReader(Reader in) 创建

    通过 readLine() 可以读取一行,返回这一行的字符串,如果读取完毕返回null

  InputStreamReader

    转换流,用于把一个字节输入流转换成字符输入流,作用于一个字节输入流

    通过 new InputStreamReader(InputStream in) 创建

  CharArrayReader

    字符数组输入流,操作IO不产生文件

    用于把一个字符数组写入流,作用于一个字符数组

    通过 new CharArrayReader(char[] buf) 创建

常用方法:

read();  //从输入流中读取一个字符,读取结束返回-1
read(char[] c);  //把输入流读进一个字符数组,读取结束返回-1
read(char[] c, int off, int len);  // 把输入流的部分读进字符数组,读取结束返回-1

Writer(字符输出流)

实现类:

  FileWriter

    文件字符输出流,把流内容写入到文件,作用于文件

    通过 new FileWriter(File file) 创建的会对文件进行覆盖

    通过 new FileWriter(File file) 创建的会在文件莫问进行追加

  PrintWriter

    打印流,因为有了PrintStream,这个类使用的比较少

  OutputStreamWriter

    转换流,把字节输出流转换成字符输出流,作用于字节输出流

    通过 new OutputStreamWriter(OutputStream out) 创建

  CharArrayWriter

    字符数组输出流,把内容写入字符数组,操作IO不产生文件

    通过 new CharArrayWriter() 创建

  BufferedWriter

    字符缓冲输出流,用于把一个字符输出流进行缓冲,提高效率

    通过 new BufferedWriter(Writer out) 创建

常用方法:

write(int c);    // 把流中的一个字符写入c中
write(char[] c);    // 把流的内容写入字符数组c
write(char[] c, int off, int len);    // 把流中的部分写入字符输出c
write(String str);    // 把流中的内容写入字符串
write(String str, int off, int len);    // 把流中的部分写入字符串
原文地址:https://www.cnblogs.com/huanggy/p/9191113.html