黑马JAVA P159 文件字节输出流、文件拷贝、资源释放的2种方式

 

 

 

 

 

 

 

package com.itheima.d4_byte_stream;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class FileInputStreamDemo04 {
    public static void main(String[] args) throws Exception {
        //1.创建一个文件字节输出流管道与目标文件接通
// OutputStream os = new FileOutputStream("D:\\code\\javasepromax\\file-io-app/src/out04.txt"); //先清空之前的数据,写新数据进入
 OutputStream os = new FileOutputStream("D:\\code\\javasepromax\\file-io-app/src/out04.txt",true); //追加数据管道

        //2.写数据出去
        //a.public void write (int a):写一个字节出去
        os.write('a');
        os.write(98);
        os.write("\r\n".getBytes());//换行
//        os.write('徐');

        //b.public void write(byte [] buffer): 写一个字节数组出去
        byte [] buffer = {'a',97 , 98 ,99};
        os.write(buffer);
        os.write("\r\n".getBytes());//换行

        byte[] buffer2 = "我是中国人".getBytes();
        os.write(buffer2);
        os.write("\r\n".getBytes());//换行

//       c.public void wirte(byte [] buffer , int pos , int len): 写一个字节数组的一部分出去。
        byte [] buffer3 = {'a',97 , 98 ,99};
        os.write(buffer3,0,3);
        os.write("\r\n".getBytes());//换行

//        os.flush();//写数据必须,刷新数据  可以继续使用流
        os.close(); //释放资源:包含了刷新的!!关闭后不可以继续使用了
    }
}

 


 

 

package com.itheima.d4_byte_stream;

import java.io.*;

/**
 * 目标:学会使用字节流完成文件的复制(支持一切文件类型的复制)
 */
public class OutputStreamDemo04 {
    public static void main(String[] args) {
        try {
            //1.创建一个字节输入流管道与原视频接通
            InputStream is = new FileInputStream("D:\\WpSystem\\S-1-5-21-3257775804-2951877094-422413062-1001\\AppData\\Local\\Packages\\TencentWeChatLimited.forWindows10_sdtnhv12zgd7a\\LocalCache\\Roaming\\Tencent\\WeChatAppStore\\WeChatAppStore Files\\LQM15118239251\\Video\\0d952a0dd44a7dd37fdc85bcebf5cc4f.mp4");

            //2.创建一个字节输出流管道与目标文件接通
            OutputStream os = new FileOutputStream("D:\\黑马JAVA资料\\new.avi");

            //3.定义一个字节数组转移数据
            byte[] buffer = new byte[1024];
            int len; //记录每次读取的字节数
            while ((len = is.read(buffer))!=-1 ){
                os.write(buffer,0, len);
            }
            System.out.println("复制完成了!!");

            //4.关闭流
            os.close();
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

 

 

package com.itheima.d5_resource;

import java.io.*;

/**
 * 目标:学会使用finally释放
 */
public class TryCatchFinallyDemo1 {
    public static void main(String[] args) {
        InputStream is = null;
        OutputStream os = null;
        try {
            //1.创建一个字节输入流管道与原视频接通
             is = new FileInputStream("D:\\WpSystem\\S-1-5-21-3257775804-2951877094-422413062-1001\\AppData\\Local\\Packages\\TencentWeChatLimited.forWindows10_sdtnhv12zgd7a\\LocalCache\\Roaming\\Tencent\\WeChatAppStore\\WeChatAppStore Files\\LQM15118239251\\Video\\0d952a0dd44a7dd37fdc85bcebf5cc4f.mp4");

            //2.创建一个字节输出流管道与目标文件接通
             os = new FileOutputStream("D:\\黑马JAVA资料\\new.avi");

            //3.定义一个字节数组转移数据
            byte[] buffer = new byte[1024];
            int len; //记录每次读取的字节数
            while ((len = is.read(buffer))!=-1 ){
                os.write(buffer,0, len);
            }
            System.out.println("复制完成了!!");

//            System.out.println(10 / 0);

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //无论代码是正常结束,还是出现异常都要最后执行这里
            System.out.println("========finally==========");
            try {
                //4.关闭流
                if(os != null)os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if(is != null)is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        System.out.println(test(10,0));
    }

    public static int test(int a ,int b ){
        try {
            int c = a / b;
            return c;
        } catch (Exception e) {
            e.printStackTrace();
            return -11111; //计算出现bug
        }finally {
            //哪怕上面有return语句执行,也必须先执行完这里才可以!
            //开发中不建议在这里加return,如果加了,返回的永远是这里的数据了,这样才会出现问题!
            return 100;
        }
    }
}

 

 

 

package com.itheima.d5_resource;

import java.io.*;

/**
 * 目标:学会使用finally释放
 */
public class TryCatchResourceDemo2 {
    public static void main(String[] args) {
        try (//
             //这里面只能放置资源对象,用完会自动关闭:自动调用资源对象的close方法关闭资源(即使出现异常也会做关闭操作)
             //1.创建一个字节输入流管道与原视频接通
            InputStream     is = new FileInputStream("D:\\WpSystem\\S-1-5-21-3257775804-2951877094-422413062-1001\\AppData\\Local\\Packages\\TencentWeChatLimited.forWindows10_sdtnhv12zgd7a\\LocalCache\\Roaming\\Tencent\\WeChatAppStore\\WeChatAppStore Files\\LQM15118239251\\Video\\0d952a0dd44a7dd37fdc85bcebf5cc4f.mp4");
             //2.创建一个字节输出流管道与目标文件接通
            OutputStream    os = new FileOutputStream("D:\\黑马JAVA资料\\new.avi");

            //int age = 23; //这里只能放资源
        ){
            //3.定义一个字节数组转移数据
            byte[] buffer = new byte[1024];
            int len; //记录每次读取的字节数
            while ((len = is.read(buffer))!=-1 ){
                os.write(buffer,0, len);
            }
            System.out.println("复制完成了!!");

//            System.out.println(10 / 0);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
package com.itheima.d5_resource;

import java.io.*;

/**
 * 目标:JDK 9 释放资源的方式:可以了解下
 */
public class TryCatchResourceDemo3 {
    public static void main(String[] args) throws Exception {
        //这里只能放置资源对象,用完会自动关闭:自动调用资源对象的close方法关闭资源(即使出现异常也会做关闭操作)
        //1.创建一个字节输入流管道与原视频接通
        InputStream     is = new FileInputStream("D:\\WpSystem\\S-1-5-21-3257775804-2951877094-422413062-1001\\AppData\\Local\\Packages\\TencentWeChatLimited.forWindows10_sdtnhv12zgd7a\\LocalCache\\Roaming\\Tencent\\WeChatAppStore\\WeChatAppStore Files\\LQM15118239251\\Video\\0d952a0dd44a7dd37fdc85bcebf5cc4f.mp4");
        //2.创建一个字节输出流管道与目标文件接通
        OutputStream    os = new FileOutputStream("D:\\黑马JAVA资料\\new.avi");

        try (is ; os) {
            //3.定义一个字节数组转移数据
            byte[] buffer = new byte[1024];
            int len; //记录每次读取的字节数
            while ((len = is.read(buffer))!=-1 ){
                os.write(buffer,0, len);
            }
            System.out.println("复制完成了!!");
//            System.out.println(10 / 0);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值