InputStream
outputStream
字节流基类
InputStream
主要用于对二进制的非文本文件进行操作如多媒体 Mp3等
InputStream主要用于对文件读取到输入流当中,是一个抽象的类
常用到的方法:
InputStream.read();读取一个字节的信息到输入流当中
InputStream.read([]);读取指定数据字节的信息到输入流当中
使用方法
InputStream is = new FileInputStream("D:\\aa.txt");
int r=is.read();
System.out.println((char)r); 读取出一个字节并打印出来
outputStream
这也是一个抽像类
主要用于将流中的二进制数据写入到文件当中
常用方法
outputStream.writer()读取一个字节的信息到输入流当中
outputStream.writer(byte[]);读取一个字节的信息到输入流当中
BufferedInputStream
因为InputStream在读取的时候一次只会读取一个字节,如果数据量大的话,磁盘的磁头也会消耗很快,
读取速度也不快,所以BufferedInputStream的出现就是为了创建一个缓存区,
InputStream一次性读取一个定长度的信息到一个缓存数组里面,减少对磁盘的I/O操作,建立缓存机制
BufferOutputStream
由于OutputStream.writer();每次向硬盘写入一个字节的数据,造成频繁的写入,写入慢,所以建立了BufferOutputStream缓存机制,
将输入流的每次读取一个字节的信息放到BufferOutputStream中,等达到一定数量的时候写入硬盘中,减少了写入的次数,提高了效率
未例:
未加缓存复制文件
InputStream is = new FileInputStream(“D:\\aa.txt”);
OutputStream os = new FileOutputStream("D:aaaa.txt");
int r=0;
while((r=is.read)!=-1){
os.writer(r);
}
加缓存复制文件
InputStream is = new FileInputStream(“D:\\aa.txt”);
BufferedInputStream dis = new BufferedInputStream(is);
OutputStream os = new FileOutputStream("D:aaaa.txt");
BufferedOutputStream bos = new BufferedOutputStream(os);
int r=0;
while((r=dis.read)!=-1){
bos.writer(r);
}
疑惑点:
InputStream is = new FileInputStream(“D:\\aa.txt”);
OutputStream os = new FileOutputStream("D:aaaa.txt");
byte[] b =new byte[1024]'; 在这里设置一个缓存,和BufferedInputStream的缓存原理是一样的。为什么还要用BufferedInputStream呢
int r=0;
while((r=is.read(b))!=-1){
os.writer(b);
}