字节流是以byte为单位进行读取,字符流是以char为单位进行读取。他们都是节点流:用于直接操作目标设备的流。下面我们对比着对下列两种流进行介绍。
提示:以下是本篇文章正文内容,下面案例可供参考
InputStream是抽象的基类,必须使用其子类来使用
public abstract class InputStream implements Closeable
int read() throws IOException; 每次读取的是一个字节的数据,读取到文件的末尾返回-1
int read(byte b[]) throws IOException:每次读取的数据读取到byte数组中,返回读取的数据有效个数,读到文件结尾处为-1
int read(byte b[], int off, int len) throws IOException:每次读取的数据读到byte数组中,从偏移量offer开始,长度为len,读到文件结尾处为-1
文件输入流:
public FileInputStream(String name)//打开一个字符串路径的流
public FileInputStream(File file)//打开一个File实例的流
public abstract class OutputStream implements Closeable, Flushable
void flush() throws IOException:刷新输出流并强制缓冲的字节被写出
void write(int b) throws IOException: 将int值写入到输出流中
void write(byte b[]) throws IOException:将字节数据内容写入到输出流中
void write(byte b[], int off, int len) throws IOException :将字节数据数据从off位置写入len长度的数据到输出流中
文件输入流 :将数据写入到磁盘使用该流实例操作
说明:
1、如果指定的路径不存在,会自动创建该文件路径
2、如果file存在,append参数没有传或者给定false,会清空文件原内容
3、如果文件存在,append为true,会追加内容
public FileOutputStream(String name)
public FileOutputStream(String name, boolean append) // 默认是false:覆盖原内容 true:以追加的形式将新增内容写在末尾
FileOutputStream(File file)
FileOutputStream(File file, boolean append)
Reader是抽象的基类,必须使用其子类来使用
public abstract class Reader implements Readable, Closeable
int read() throws IOException //读取一个字符,并返回字符表示为int类型 ,读取结束时-1
int read(char cbuf[]) throws IOException //输入流读取到一个char类型数据数据中,返回值读取有效个数,读取结尾时是-1
int read(char cbuf[], int off, int len) throws IOException
文件输入流:
当文件不存在时,会抛出FileNotFoundException异常,这个和FileInputStream类似的
public FileReader(String fileName) throws FileNotFoundException //打开一个字符串路径的流
public FileReader(File file) throws FileNotFoundException //打开一个file实例的流
public abstract class Writer implements Appendable, Closeable, Flushable
void write(int c) throws IOException //写入单个字符写入到输出流中
void write(char cbuf[]) throws IOException //写入字符数组到输出流中
void write(char cbuf[], int off, int len) throws IOException //从字符数组的指定偏移位置写入len长度的数据到输出流中
void write(String str) throws IOException //将字符串写入到出处流中
void write(String str, int off, int len) throws IOException
文件输入流 :将数据写入到磁盘使用该流实例操作
说明:
1、如果指定的路径不存在,会自动创建该文件路径
2、如果file存在,append参数没有传或者给定false,会清空文件原内容
3、如果文件存在,append为true,会追加内容
public FileWriter(String fileName) throws IOException 以字符串路径来打开字符输出流
public FileWriter(String fileName, boolean append) throws IOException 以字符串路径来打开字符传输流,可以指定是否是追加形式(true)还是覆盖的形式(false)写入数据
public FileWriter(File file) throws IOException
public FileWriter(File file, boolean append) throws IOException
设备上的数据无论是图片或者视频,文字,它们都以二进制存储的。二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节。意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据。
结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。