[java 基础学习] 字节流与字符流
参考黑马课程
顶级父类:
字节流:InputStream、OutputStream
字符流:Reader、Writer
字节流
-
OutputStream:抽象类,表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。它定义了字节输出流的基本共性功能方法。
基本方法:
public void close() :关闭此输出流并释放与此流相关联的任何系统资源。
public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。
public void write(byte[] b) :将 b.length字节从指定的字节数组写入此输出流。
public void write(byte[] b, int off, int len) :将指定 byte 数组中从偏移量 off 开始的len个字节写入此输出流
public abstract void write(int b) :将指定的字节写入此输出流 -
FileOutputStream类:文件输出流,用于将数据写出到文件。
构造方法:
public FileOutputStream(File file) :创建文件输出流以写入由指定的File对象表示的文件。
public FileOutputStream(String name) :创建文件输出流以指定的名称写入文件。
注:在创建流对象时,传入一个路径。如果路径下没有这个文件,会创建该文件,如果有,会清空此文件中的数据。基本方法:
void write(int b) 将指定字节写入此文件输出流
void write(byte[] b) 将 b.length 个字节从指定byte数组写入此文件输出流中。
void write(byte[] b, int off, int len) 将指定byte数组中从偏移量 off 开始的 len 个字节写入此文件输出流。将数据添加到文件最后:
public FileOutputStream(File file, boolean append) : 创建文件输出流以写入由指定的 File对象表示的文件。
public FileOutputStream(String name, boolean append) : 创建文件输出流以指定的名称写入文件。
注:append为true时,追加数据,false:清空原有数据。写入数据时换行:需在数据中添加换行符:
windows系统:\r\n
unix系统:\n
Mac系统:\r -
InputStream:抽象类,类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。它定义了字节输入流的基本共性功能方法。
基本方法:
public void close() :关闭此输入流并释放与此流相关联的任何系统资源。
public abstract int read() : 从输入流读取数据的下一个字节。
public int read(byte[] b) : 从输入流中读取一些字节数,并将它们存储到字节数组b中。 -
FileInputStream:文件输入流。用于从文件中读取字节。
构造方法:
FileInputStream(File file) : 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象file命名。
FileInputStream(String name) : 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名name命名
注:创建该流对象时,必须传入一个文件路径,若在该路径下没有此文件,会抛出FileNotFoundException。基本方法:
int read() 从此输入流中读取一个数据字节。 读到文件末尾时,返回-1.
int read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。 返回的是从文件中读取的有效字节数,读到文件末尾返回-1.
字符流
只能操作文本文件,不能操作图片、视频等非文本文件。
-
Reader:抽象类,是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。它定义了字符输入 流的基本共性功能方法。
基本方法:
public void close() :关闭此流并释放与此流相关联的任何系统资源。
public int read() :从输入流读取一个字符。
public int read(char[] cbuf) :从输入流中读取一些字符,并将它们存储到字符数组cbuf中 -
FileReader:是读取字符文件的便利类。创建对象时使用系统默认的字符编码和默认字节缓冲区。
构造方法:
FileReader(File file) : 创建一个新的 FileReader,给定要读取的File对象。
FileReader(String fileName) : 创建一个新的 FileReader,给定要读取的文件的名称常用方法:
public int read():读取单个字符。读取值文件末尾时返回-1。
public int read(char[] cbuf):将字符读入数组。返回读取到的有效字符个数。 -
Writer:抽象类,是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。它定义了字节输出流的基本共性功能方法。
基本方法:
void write(int c): 写入单个字符。
void write(char[] cbuf): 写入字符数组。
abstract void write(char[] cbuf, int off, int len): 写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
void write(String str): 写入字符串。
void write(String str, int off, int len): 写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
void flush(): 刷新该流的缓冲。
void close(): 关闭此流,但要先刷新它 -
FileWriter:写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。
构造方法:
FileWriter(File file) : 创建一个新的 FileWriter,给定要读取的File对象。
FileWriter(String fileName) : 创建一个新的 FileWriter,给定要读取的文件的名称。常用方法:
public void write(int c):写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。
public void write(char[] cbuf):写入字符数组。
public abstract void write(char[] cbuf, int off, int len):写入字符数组的某一部分。
public void write(String str):写入字符串。
public void write(String str, int off, int len):写入字符串的某一部分。数据续写与换行:类似FileOutputStream。