整理并熟练字节流拷贝功能 基本流复制
整理并熟练字节流拷贝功能 基本流复制
1 缓冲流概述
* 可提高IO流的读写速度
* 分为字节缓冲流与字符缓冲流
2 字节输出流缓冲流BufferedOutputStream
* 字节输出流的缓冲流
* java.io.BufferedOuputStream 作用: 提高原有输出流的写入效率
* BufferedOuputStream 继承 OutputStream
* 方法,写入 write 字节,字节数组
* 构造方法:
* BufferedOuputStream(OuputStream out)
* 可以传递任意的字节输出流, 传递的是哪个字节流,就对哪个字节流提高效率
3 字节输入流缓冲流BufferedInputStream
* 字节输入流的缓冲流
* 继承InputStream,标准的字节输入流
* 读取方法 read() 单个字节,字节数组
* 构造方法:
* BufferedInputStream(InputStream in)
* 可以传递任意的字节输入流,传递是谁,就提高谁的效率
* 可以传递的字节输入流 FileInputStream
package cn.zhang.demo3;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class HomeWork {
public static void main(String[] args) {
try {
//创建一个mp3文件 里面写入 zhangyiyiyi
FileOutputStream fos=new FileOutputStream("d:\\123.mp3");
fos.write("zhangyiyiyiyi".getBytes());
File fil=new File("d:\\123.mp3");
boolean file = fil.exists();
System.out.println("MP3文件是否存在"+file);
fos.close();
//一次一字节 读文件
fun();
//一次多字节 写文件
//fun1();
// 3 字节缓冲流复制 一次读一个字节
//fun2();
//4 字节缓冲流复制 一次读一多个字节
//fun3();
} catch (IOException e) {
e.printStackTrace();
}
}
//4 字节缓冲流复制 一次读一多个字节
public static void fun3() throws IOException{
BufferedInputStream b=new BufferedInputStream(new FileInputStream("d:\\123.mp3"));
BufferedOutputStream b1=new BufferedOutputStream(new FileOutputStream("d:\\321.mp3"));
byte[] bytes=new byte[1024];
int len;
while((len=b.read(bytes))!=-1){
b1.write(len);
System.out.println(new String(bytes,0,len));
}
b1.close();
b.close();
}
// 3 字节缓冲流复制 一次读一个字节
public static void fun2() throws IOException{
BufferedInputStream b=new BufferedInputStream(new FileInputStream("d:\\123.mp3"));
BufferedOutputStream b1=new BufferedOutputStream(new FileOutputStream("d:\\321.mp3"));
int len;
while((len=b.read())!=-1){
b1.flush();
b1.write(len);
System.out.println((char)len);
}
b1.close();
b.close();
}
//一次多字节 读取文件
public static void fun1() throws IOException{
FileInputStream f=new FileInputStream("d:\\123.mp3");
byte[] bytes=new byte[1024];
int len=0;
while((len=f.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
f.close();
}
//一次一字节 读取文件
public static void fun() throws IOException{
FileInputStream f=new FileInputStream("d:\\123.mp3");
int len=0;
while((len=f.read())!=-1){
System.out.println((char)len);
}
f.close();
}
}