java IO

java中的流的类型

  • 按照流的方向:可以分为输入流(InpuStream)和输出流(OutputStream)

  • 按照功能分类:节点流(从一个特定的地方读写数据)和处理流(对一个已经存在的流的封装)

  • 按照数据的处理单位: 字节流和字符流

    流的分类

    字节流:

    节点流

    FileInputStream:从文件系统获得输入的文件。

    构造方法:

    ​ FileInputStream(File file) 连接到一个实际的文件

    ​ FileInputStream(String name) 根据路径连接到一个实际的文件

    方法:

    ​ public int read(byte[] b) throws IOException 将源文件的字节数据读到缓冲区   b,根据返回值判断文件数据是否已经读完,返回-1,代表文件数据已读完

    ​ public int read(byte[] b, int off, int len) throws IOException,将源文件的字节数   b,从数组的偏移量off位置开始存放长度为len的字节数,如果len>b.length-off,将会抛出 

    IndexOutOfBoundsException .

    FileOutputStream

    构造方法

    ​ FileOutputStream(File file) 创建一个文件输出流写入指定的 File对象

    FileOutputStream(File file, boolean append)创建一个文件输出流写入指定的 File对象,append表示拼接,不覆盖

    ByteArrayInputStream: 把字节数组转换为输入流

    构造方法:

    ​ ByteArrayInputStream(byte[] buf) :使用一个字节数组当中所有的数据做为数据源,程序 可以像输入流方式一样读取字节,可以看做一个虚拟的文件,用文件的方式去读取它里面的数据。

    ​ ByteArrayInputStream(byte[] b,int offset,int length):从数组当中的第offset开始,一直取出length个这个字节做为数据源

    ByteArrayOutputStream : 把字节数组转换为输出流

    构造方法:

    ​ ByteArrayOutputStream()创建一个新的字节数组输出流

    ​ ByteArrayOutputStream(int size)创建一个新的字节数组输出流,具有指定大小的缓冲容量,   以字节为单位的。

    处理流

    BufferedInputStream: 缓冲输入流

    构造方法:BufferedInputStream(InputStream in)

    ​  BufferedInputStream(InputStream in, int size) 指定缓冲区的大小

    BufferedOutputStream:缓冲输出流

    构造方法:

    ​ BufferedOutputStream(OutputStream out)创建一个新的缓冲输出流,将数据入到  指定的基本输出流中

    ​ BufferedOutputStream(OutputStream out, int size)创建一个新的缓冲输出流,用指定的缓冲区大小写数据到指定的基本输出流中。

    DataInputStream:数据输入流,读时提供更多的类型

    构造方法:DataInputStream(InputStream in)

    方法:

    ​ readByte()——从输入流中读取1个字节,指它转换为byte类型的数据;
      readLong()——从输入流中读取8个字节,指它转换为long类型的数据;
      readFloat()——从输入流中读取4个字节,指它转换为float类型的数据;
      readUTF()—— 从输入流中读取1到3个字节,指它转换为UTF-8字符编码的字符串;

    DataOutputStream:数据输出流,读时提供更多的类型

    构造方法:

    ​ DataOutputStream(OutputStream out)创建一个新的数据输出流,将数据写入到指定的基本输出流中。

    方法:

    ​ writeByte(int v)——将byte作为字节流输出
      writeLong(long v)——将long作为输出流输出
      writeFloat(float v)——将float作为输出流输出
      writeUTF(String str)—— 将String作为输出流输出

    ObjectInputStream:对象输入流,主要用于对象序列化和反序列化

    构造方法:

    ​ ObjectInputStream( )创建一个对象输入流

    ​ ObjectInputStream(InputStream in)创建一个对象输入流读取指定的输入流。

    ObjectOutputStream:对象输出流

    构造方法:

    ​ ObjectOutputStream(OutputStream out)创建对象输出到指定的输出流

字符流:

节点流

CharArrayReader :把字符数组转换为Reader,从字符数组中读取字符;

构造方法:

​ CharArrayReader(char[] buf)创建从指定的字符数组的一个chararrayreader。
CharArrayReader(char[] buf, int offset, int length创建从指定的字符数组的一个 chararrayreader。

CharArrayWriter:将字符数组有Writer写出

构造方法:

​ CharArrayWriter() 

StringReader : 把字符串转换为Reader,从字符串中读取字符;

构造方法:

​ StringReader(String s)

StringWriter :将字符串有Writer写出

FileReader : 从文件中读取字符;

构造方法:

​ FileReader(File file)

FileWriter:将字符写入到指定文件

构造方法:

​ FileWriter(File file)

​ FileWriter(File file, boolean append)

​ FileWriter(String fileName)

​ FileWriter(String fileName, boolean append)

处理流

InputStreamReader : 过滤器,把InputStream转换为Reader,可以指定字符编码;

构造方法:

​ InputStreamReader(InputStream in)创建一个inputstreamreader使用默认字符集。

​ InputStreamReader(InputStream in, Charset cs)创建一个inputstreamreader使用给定的字符集。

​ InputStreamReader(InputStream in, CharsetDecoder dec)创建一个inputstreamreader使用给定的字符集解码。
InputStreamReader(InputStream in, String charsetName)创建一个inputstreamreader使用指定的字符集。

OutputStreamWriter:将字符流转为字节流输出,可以指定字符编码;

构造方法:

​ OutputStreamWriter(OutputStream out)创建一个outputstreamwriter使用默认的字符编码。
OutputStreamWriter(OutputStream out, Charset cs)创建一个outputstreamwriter使用给定的字符集。
OutputStreamWriter(OutputStream out, CharsetEncoder enc)创建一个outputstreamwriter使用给定的字符集编码。
OutputStreamWriter(OutputStream out, String charsetName)创建一个outputstreamwriter使用指定的字符集。

BufferedReader: 过滤器,为其他Reader提供读缓冲区,此外,它的readLine()方法能够读入一行字符串;

构造方法:

​ BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)创建一个使用指定大小的输入缓冲区的缓冲字符输入流。

BufferedWriter:

构造方法:

​ BufferedWriter(Writer out)创建一个使用默认大小输出缓冲区的缓冲字符输出流

​ BufferedWriter(Writer out, int sz)创建一个新的缓冲字符输出流,该流使用给定大小的输出缓冲区。

序列化与反序列化

序列化:将对象写到输出流中,便于在网络中进行传输或者存储到文件中

反序列化:将输入流中的数据转化为对象,将从网络或文件中读取的字节数据转化为对象

文章目录
  1. 1. java中的流的类型
  2. 2. 流的分类
    1. 2.1. 字节流:
    2. 2.2. 字符流:
  3. 3. 序列化与反序列化
|
载入天数...载入时分秒...