Java IO字节流输出

字节流输出

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();
			}
		}		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值