美文网首页
Java学习day-19:IO流(处理流)

Java学习day-19:IO流(处理流)

作者: 开源oo柒 | 来源:发表于2019-07-31 23:20 被阅读0次

    一、缓冲流:

    必须要结合节点流才能使用处理流。

    1.文件字节流:

    BufferedInputStream/BufferedOutputStream;这两个流是缓冲字节流,通过内部缓存数组来提高操作流的效率。

    (1)BuferedInputStream:

    该类实现缓冲的输出流。在创建BufferedInputStream时,会创建一个内部缓冲区数组

    构造方法:

    1)BufferedInputStream(InputStream in):创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。

    2)BufferedOutputStream(InputStream in, int size):创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。

    常用方法:

    1)read():参见 InputStream 的 read 方法的常规协定。

    2)read(byte[] b, int off, int len): 从此字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中。

    3)close():关闭此输入流并释放与该流关联的所有系统资源。

    (2)BufferedOutputStream:

    该类实现缓冲的输出流。

    构造方法:

    1)BufferedOutputStream(OutputStream out): 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。

    2)BufferedOutputStream(OutputStream out, int size):创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。

    常用方法:

    1)write(int b):将指定的字节写入此缓冲的输出流。

    2)write(byte[] b, int off, int len): 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此缓冲的输出流。

    3)flush():刷新此缓冲的输出流。

    4)close():关闭此输出流并释放与此流有关的所有系统资源。

    (3)使用缓冲字节流实现文件的复制:

    缓冲流对文件数据的读写效率更高;字节流可以复制任何文件数据。

    1)在关闭流时,应该先关闭最外层的包装流,即“后开的先关闭”。

    2) 缓存区的大小默认是8192字节,也可以使用其它的构造方法自己指定大小。

    代码截图 结果

    2.文件字符流:

    BufferedReader / BufferedWriter:字符流增加了缓存机制,大大提高了读写文本文件的效率;readLine();方法在处理文本时,是按行读取的方法。

    (1)BufferedReader:

    从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取;readLine()方法是特有的方法。

    构造方法:

    1)BufferedReader(Reader in): 创建一个使用默认大小输入缓冲区的缓冲字符输入流。

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

    常用方法:

    1)readLine(): 读取一个文本行。

    2)read(char[] cbuf, int off, int len):将字符读入数组的某一部分。

    3)close():关闭该流并释放与之关联的所有资源。

    4)flush():刷新此缓冲的输出流。

    (2)BufferedWriter:

    将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

    构造方法:

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

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

    常用方法:

    1)write(char[] cbuf, int off, int len):写入字符数组的某一部分。

    2)write(String s, int off, int len): 写入字符串的某一部分。

    3)flush():刷新该流的缓冲。

    4)newLine():写入一个换行分隔符。

    5)close():关闭此流,但要先刷新它。

    (3)使用缓冲字符流实现文本文件的复制:

    代码截图 结果

    二、转换流:

    用来实现将字节流转化成字符流;属于处理流;

    (1)InputStreamReader:

    将InputStream转换为Reader;InputStreamReader 是字节流通向字符流的桥梁。

    构造方法:

    1)InputStreamReader(InputStream in):创建一个使用默认字符集的InputStreamReader。

    2)InputStreamReader(InputStream in, Charset cs): 创建使用给定字符集的 InputStreamReader。

    常用方法:

    1)read(): 读取单个字符。

    2)read(char[] cbuf, int offset, int length): 将字符读入数组中的某一部分。

    3)close():关闭该流并释放与之关联的所有资源。

    (2)OutputStreamWriter:

    将OutputStream转换为Writer;OutputStreamWriter 是字符流通向字节流的桥梁。

    构造方法

    1)OutputStreamWriter(OutputStream out):创建使用默认字符编码的 OutputStreamWriter。

    2)OutputStreamWriter(OutputStream out, Charset cs):创建使用给定字符集的 OutputStreamWriter。

    常用方法:

    1)write(String str, int off, int len):写入字符串的某一部分。

    2)write(char[] cbuf, int off, int len):写入字符数组的某一部分。

    3)flush():刷新该流的缓冲。

    4)close():关闭此流,但要先刷新它。

    (3)使用转换流:

    代码截图 结果

    三、打印流和数据流:

    1.打印流:

    (1)PrintStream:

    1)PrintStream的输出功能非常强大,通常需要输出文本内容,都可以将输出流包装成 PrintStream 后进行输出。

    2)System.out 就是 PrintStream 的一个实例,代表显示器。

    (2)PrintWriter:

    1)PrintStream 的对应字符流,功能相同,方法对应。

    2)复制文件时可以使用PrintWriter代替BufferedWriter完成,更简单。

    代码截图

    2.数据流:

    (1)DataInputStream / DataOutputStream:

    1) 提供了可以存取所有 Java 基础类型数据(如:int,double等)和 String 的方法。

    代码截图

    相关文章

      网友评论

          本文标题:Java学习day-19:IO流(处理流)

          本文链接:https://www.haomeiwen.com/subject/zaexdctx.html