天天看点

字符流和字节流的区别_IO流,字节流,字符流

字符流和字节流的区别_IO流,字节流,字符流

IO流

输入(Input)

指的是:可以让程序从外部系统获得数据(核心含义是“读”,读取外部数据)。

输出(Output)

指的是:程序输出数据给外部系统从而可以操作外部系统(核心含义是“写”,将数据写出到外部系

按流的方向分类:

1. 输入流:数据流向是数据源到程序(以InputStream、Reader结尾的流)。

2. 输出流:数据流向是程序到目的地(以OutPutStream、Writer结尾的流)。统)。

按处理的数据单元分类:

字节流:以字节为单位获取数据,命名上以Stream结尾的流一般是字节流,如FileInputStream、FileOutputStream。

字符流:以字符为单位获取数据,命名上以Reader/Writer结尾的流一般是字符流,如FileReader、FileWriter。

按处理对象不同分类:

1. 节点流:可以直接从数据源或目的地读写数据,如FileInputStream、FileReader、DataInputStream等。

2. 处理流:不直接连接到数据源或目的地,是”处理流的流”。通过对其他流的处理提高程序的性能,如BufferedInputStream、BufferedReader等。处理流也叫包装流。

节点流处于IO操作的第一线,所有操作必须通过它们进行;处理流可以对节点流进行包装,提高性能或提高程序的灵活性。

FileInputStream构造方法:

FileInputStream(File file) 通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。

FileInputStream(String name) 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。

常用方法:

read() 从该输入流读取一个字节的数据。

read(byte[] b) 从该输入流读取最多 b.length个字节的数据为字节数组。

close() 关闭此文件输入流并释放与流相关联的任何系统资源。

package 
           
常用方法: read(byte[] b) 从该输入流读取最多 b.length个字节的数据为字节数组。
package 
           

java.io.OutputStream

--java.io.FileOutputStream : 继承了OutputStream,文件输出流是用于将数据写入到输出流File

构造方法

FileOutputStream(File file) 创建文件输出流以写入由指定的 File对象表示的文件。

FileOutputStream(String name) 创建文件输出流以指定的名称写入文件。

FileOutputStream(String name, boolean append) 创建文件输出流以指定的名称写入文件。

FileOutputStream(File file, boolean append) 创建文件输出流以写入由指定的 File对象表示的文件。

常用方法:

write(int b) 将指定的字节写入此文件输出流。

write(byte[] b) 将 b.length个字节从指定的字节数组写入此文件输出流。

close() 关闭此文件输出流并释放与此流相关联的任何系统资源。

package 
           
将字符串添加到另一个文件中
package 
           

数组拷贝

使用输入流从源中将文件读取出来

使用输出流将文件写入到目的地

package 
           

四大IO抽象类

·InputStream

此抽象类是表示字节输入流的所有类的父类。InputSteam是一个抽象类,它不可以实例化。 数据的读取需要由它的子类来实现。根据节点的不同,它派生了不同的节点流子类 。

继承自InputSteam的流都是用于向程序中输入数据,且数据的单位为字节(8 bit)。

常用方法:

int read():读取一个字节的数据,并将字节的值作为int类型返回(0-255之间的一个值)。如果未读出字节则返回-1(返回值为-1表示读取结束)。

void close():关闭输入流对象,释放相关系统资源。

· OutputStream

此抽象类是表示字节输出流的所有类的父类。输出流接收输出字节并将这些字节发送到某个目的地。

常用方法:

void write(int n):向目的地中写入一个字节。

void close():关闭输出流对象,释放相关系统资源。

· Reader

Reader用于读取的字符流抽象类,数据单位为字符。

int read(): 读取一个字符的数据,并将字符的值作为int类型返回(0-65535之间的一个值,即Unicode值)。如果未读出字符则返回-1(返回值为-1表示读取结束)。

void close() : 关闭流对象,释放相关系统资源。

· Writer

Writer用于写入的字符流抽象类,数据单位为字符。

void write(int n): 向输出流中写入一个字符。

void close() : 关闭输出流对象,释放相关系统资源。