IO流概述和分类

IO流分类:

  • 按照数据的流向

    输入流:读数据
    输出流:写数据

  • 按照数据类型来分

    字节流
    字节输入流;字节输出流;缓冲输入流
    字符流
    字符输入流;字符输出流;缓冲输出流
    一般来说,我们说IO流的分类是按照数据类型来粉的
    那么这两种流都在什么情况下使用呢?

  • 如果数据通过Window自带的记事本软件打开, 我们还可以读懂里面的内容,就使用字符流,

    否则使用字节流。如果你不知道该使用哪种类型的流,就使用字节流

字节输出流

OutputStream
void write(byte[] b) 将 b.length字节从指定的字节数组写入此输出流。  
void write(byte[] b, int off, int len) 从指定的字节数组写入 len个字节,从偏移 off开始输出到此输出流。  
abstract void write(int b) 将指定的字节写入此输出流。
  1. 注意:换行符在不同的操作系统有不同的写法
    • windows(/r/n)
    • Linux(/n)
    • mac(/r)

字节输入流

abstract int read() 
从输入流读取数据的下一个字节。  
int read(byte[] b) 
从输入流读取一些字节数,并将它们存储到缓冲区 b 。  
int read(byte[] b, int off, int len) 
从输入流读取最多 len字节的数据到一个字节数组。  

缓冲输出流

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

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

缓冲输入流

BufferedInputStream(InputStream in) 
创建一个 BufferedInputStream并保存其参数,输入流 in ,供以后使用。  

BufferedInputStream(InputStream in, int size) 
创建 BufferedInputStream具有指定缓冲区大小,并保存其参数,输入流 in ,供以后使用。 

注意:FileReader要跟FileWriter区分开.FileWriter如果没有调用flush()或者close()方法,数据不会写入到文件.但是FIleReader不关流是可以读取到数据的.

重点: 输入和输出流与缓冲输入输出的区别

  • 缓冲字节(字符)流与字节(字符)流相比,效率大大提高,字节(字符)流读取(写入)一次读取(写入)一个字节,读取后再传给JVM,JVM再给程序,效率
  • 底下,而缓冲字节(字符)在读取的时候会创建一个缓冲区,一个数组,一次读取全部字节,装入数组内返回程序,大大提高了读取(写入)

缓冲输出输入的特有方法

BufferedReader
String readLine() 
读一行文字。 

BufferedWriter
void newLine() 
写一行行分隔符。 

猜你喜欢

转载自www.cnblogs.com/IAoli/p/12574192.html