字节流输出
outputstream抽象类
此抽象类是表示输出字节流的所有类的超类 输出流接收输出字节
父类
字节写出流的继承结构
--outputstream 父类不能直接创建对象,
--void close()
关闭此输出流并释放与此流有关的所有系统资源
--void flush()
刷新此输出流并强制写出所有缓冲的输出
--void write(byte[] b)
将b.length个字节从指定的byte数组写入此输出流
--void write(byte[] b,int off,int len)
将指定byte数组中从偏移量off开始的len个字节写入此输入流
--abstract void write(int b)
将指定的字节写入此输出流
子类
--fileoutputstream
--fileoutputstream(File file)
--fileoutputstream(String name)
--fileoutputstream(File file,boolean appand)
--fileoutputstream(String name,boolean append)
子类
--BufferedOutPutStream
--BufferedOutPutStream(outputStream out)
例子
private static void method(){
//1、创建输出流对象
//OutputStream in = new OutputStream();//outputStream是抽象类 无法创建对象
OutputStream out = new FileOutputStream(new File(" ?"));
OutputStream in2 = new FileOutputStream(" ?");//多态对象
//2、开始写出数据
out2.write(97);//开始输出 按照ascll表输出
//3、释放资源
in.close();
out2.close();
}
private static void method(){
//1、创建高效的输出流对象
//总结:
//效率问题:bufferedoutputstream > fileoutputstream
//因为bufferedoutstream 底层为了一个byte[],默认容量是8*1024字节相当于8k,可以减少和磁盘的交互次数,提高执行效率
OutputStream out = null;声明out变量,
try{
OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(" ?"));
OutputStream in2 = new BufferedOutputStream(new FileOutputStream(" ?"));//多态对象
//2、开始写出数据
out2.write(97);//开始输出 按照ascll表输出
}catch(IOException e){
e.printStackTrace();
}finally{
try{
//3、释放资源
out2.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
例子
//这个类用来测试文件复制
public class Test3_Demo {
public static void main(String[] args) {
System.out.println("请输入文件路径:");
String in = new Scanner(System.in).nextLine();//接收输入
File from = new File(in);
System.out.println("请输出文件路径:");
String out = new Scanner(System.in).nextLine();//接收输入
File to = new File(out);
copy(from,to);//字符流 只能复制字符
//字节流 什么都可以复制
}
public static void copy(File from,File to) {
Reader in1 = null;
Writer out1 = null;
try {
//1、读取文件
in1 = new BufferedReader(new FileReader(from));
//2、读出文件
out1 = new BufferedWriter(new FileWriter(to));
//边读边学
int b;
while((b= in1.read()) != -1) {
out1.write(b);
}
System.out.println("文件复制完成");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件复制失败");
}finally {
//3、释放资源
try {
out1.close();
in1.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}