缓冲流:
BufferedOutputStream:字节缓冲输出流
在写数据时,一个字节一个字节的写,写的次数明显很多,效率就会变得很低。
缓冲输出流的特点是:在流里维护了一个缓冲区,写字节时,先将字节写入缓冲区,当缓冲区写满时,在一次性的将数据写到文件里。这样就降低了写的次数,提高了效率。
一次缓冲输出流缺失即时性,可以使用flush方法冲刷。
常用构造器:
BufferedOutputStream(OutputStream out):创建一个制定字节输出流的缓冲流对象。
BufferedOutputStream(OutputStream out,int size):创建一个指定字节输出流的缓冲输出流对象,并设置缓冲取得大小。
常用方法:
void write(int b):写int数据的低八位,写入缓冲区内。
void write(byte[] b,int off,int len):写指定长度len的字节数组,写入缓冲区。
BufferedInputStream:字节缓冲输入流
再读取字节时,也是一个字节一个字节的读,次数多,效率低。
使用缓冲输入流,内部维护了一个缓冲区,默认大小为8k,先一次性将缓冲区装满等待读取。当将缓冲区数据读完,缓冲区再次存储后续数据。读取的次数少,效率高。
构造器:
BufferedInputStream(InputStream is):创建一个制定字节输入流的缓冲流对象。
BufferedInputStream(InputStream is,int size):创建一个指定字节输出流的缓冲输入流对象,并设置缓冲取得大小。
常用方法:
int read(byte[] bs):读取缓冲区里的字节存储到bs中。
int read(byte[] bs,int off,int len):从给定的偏移off开始,将字节输入流中的len个字节读入指定的字节数组。
数据字节流:DataOutputSteam/DataInputStream
与缓冲流一样,父类都是过滤字节流(FilterOutputSteram/FilterInputStream),这两个类提供了几个特殊的方法,可以直接写基本数据类型。
数据输出流:DataOutputStream
构造器:
DataOutputSteram(OutputStream os):创建一个指定字节输出流的数据输出流对象。
常用方法:
void write(byte[] b, int off, int len) :写入 len从指定的字节数组起始于偏移 off基础输出流。
void write(int b) :将指定的字节(参数 b的低8位)写入底层输出流。
void writeBoolean(boolean v) :将 boolean写入底层输出流作为1字节值。
void writeByte(int v) :将 byte作为1字节值写入底层输出流。
void writeBytes(String s) :将字符串作为字节序列写入基础输出流。
void writeChar(int v) :将 char写入底层输出流作为2字节值,高字节优先。
void writeChars(String s) :将字符串写入底层输出流作为一系列字符。
void writeDouble(double v) :双参数传递给转换 long使用 doubleToLongBits方法在类 Double ,然后写入该 long值基础输出流作为8字节的数量,高字节。
void writeFloat(float v) :浮子参数的转换 int使用 floatToIntBits方法在类 Float ,然后写入该 int值基础输出流作为一个4字节的数量,高字节。
void writeInt(int v) :将底层输出流写入 int作为四字节,高位字节。
void writeLong(long v) :将 long写入底层输出流,为8字节,高字节为首。
void writeShort(int v) :将 short写入底层输出流作为两个字节,高字节优先。
void writeUTF(String str) :使用 modified UTF-8编码以机器无关的方式将字符串写入基础输出流。
数据输入流:DataInputStream
构造器:
DataInputStream(InputStream in) :创建使用指定的底层InputStream的DataInputStream。
常用方法:
int read(byte[] b) :从包含的输入流中读取一些字节数,并将它们存储到缓冲区数组 b 。
int read(byte[] b, int off, int len) :从包含的输入流读取最多 len个字节的数据为字节数组。
boolean readBoolean() :读取一个输入字节,并返回 true如果该字节不为零, false如果该字节是零。
byte readByte() :读取并返回一个输入字节。
char readChar() :读取两个输入字节并返回一个 char值。
double readDouble() :读取八个输入字节并返回一个 double值。
float readFloat() :读取四个输入字节并返回一个 float值。
int readInt() :读取四个输入字节并返回一个 int值。
long readLong() :读取八个输入字节并返回一个 long值。
short readShort() :读取两个输入字节并返回一个 short值。
String readUTF() :读取已使用 modified UTF-8格式编码的字符串。