IO流 缓冲流(字符型和字节型)

一、字节型

/**
 * 缓冲流(字节型)实现非文本文件的复制
 */
public class test30 {

    public static void main(String[] args){

        //1、造文件
        File file = new File("流弊.jpg");
        File file2 = new File("流弊3.jpg");

        //2、造流
        //2.1、造节点流
        FileInputStream fileInputStream = null;
        FileOutputStream fileOutputStream = null;
        //2.2、造缓冲流
        BufferedInputStream bufferedInputStream = null;
        BufferedOutputStream bufferedOutputStream = null;

        try {

            fileInputStream = new FileInputStream(file);
            fileOutputStream = new FileOutputStream(file2);

            bufferedInputStream = new BufferedInputStream(fileInputStream);
            bufferedOutputStream = new BufferedOutputStream(fileOutputStream);

            //3、复制的细节:读取、写入
            byte[] cbuf = new byte[5];
            int len;
            while((len = bufferedInputStream.read(cbuf)) != -1){
                bufferedOutputStream.write(cbuf,0,len);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {

            //4、资源的关闭
            //要求:先关外边的流,再关里边的流
            try {
                bufferedInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

            try {
                bufferedOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

            //说明:关闭外层流的同时,内层流也会自动的进行关闭。关于内层流的关闭,我们可以省略。
//            fileInputStream.close();
//            fileOutputStream.close();

        }



    }

}

二、字符型

/**
 * 缓冲流(字符型)实现文本文件的复制
 */
public class test31 {

    public static void main(String[] args) {

        //1、
        File file = new File("hello.txt");
        File file1 = new File("hello3.txt");

        //2、造流
        //2.1、造节点流
        FileReader fileReader = null;
        FileWriter fileWriter = null;
        //2.2、造缓冲流
        BufferedReader bufferedReader = null;
        BufferedWriter bufferedWriter = null;

        try {

            fileReader = new FileReader(file);
            fileWriter = new FileWriter(file1);

            bufferedReader = new BufferedReader(fileReader);
            bufferedWriter = new BufferedWriter(fileWriter);

            //3、复制的细节:读取、写入
            //方式一、使用char[]数组
//            char[] cubf = new char[1024];
//            int len;
//            while((len = bufferedReader.read(cubf)) != -1){
//                bufferedWriter.write(cubf,0,len);
//            }

            //方式二、使用String
            String data;
            while((data = bufferedReader.readLine()) != null){
//              bufferedWriter.write(data + "\n");
                bufferedWriter.write(data);
                //提供换行的操作
                bufferedWriter.newLine();
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {

            //4、资源的关闭
            //要求:先关外边的流,再关里边的流
            try {
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

            try {
                bufferedWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

              //说明:关闭外层流的同时,内层流也会自动的进行关闭。关于内层流的关闭,我们可以省略。
//            fileReader.close();
//            fileReader.close();

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值