Java IO(二):IO流——处理流——缓冲流

IO流——处理流——缓冲流

1.节点流与处理流的关系:

节点流处于IO操作的第一线,所有操作必须通过他们进行。处理流可以对其他流进行处理(提高效率或操作灵活性),处理流在节点流之上。

2.缓冲流:

(1)字节缓冲流

BufferedInputStream

BufferedOutputStream

/**
     * 字节流文件的拷贝+缓冲流
     * @param srcPath
     * @param destPath
     * @throws IOException
     */
    public static void copyFile(String srcPath, String destPath) throws IOException{
        //1、建立联系  源(存在且为文件) + 目的地(文件可以不存在)
        File src = new File(srcPath);
        File dest = new File(destPath);

        if (!src.isFile()) {
            System.out.println("不是文件");
            throw new IOException("只能拷贝文件");
        }

        //2、选择流
        InputStream inputStream = new BufferedInputStream(new FileInputStream(src));
        OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(dest));

        //3、文件拷贝    循环+读取+写出
        byte[] flush = new byte[1024];
        int len = 0;
        //读取
        while (-1 != (len = inputStream.read(flush))) {
            //写出
            outputStream.write(flush,0,len);
        }
        outputStream.flush();   //强制刷出

        //4、释放资源    关闭流
        outputStream.close();
        inputStream.close();
    }

(2)字符缓冲流

BufferedReader             readLine()

BufferedWriter                newLine()

public static void main(String[] args) {
        //1.创建源
        File src = new File("D:/IOtest/demo.txt");
        File dest = new File("D:/IOtest/char.txt");
        //2.选择流
        BufferedReader reader = null;
        BufferedWriter writer = null;
        try {
            reader = new BufferedReader(new FileReader(src));
            writer = new BufferedWriter(new FileWriter(dest));
            //读取操作
            /*
            char[] flush = new char[1024];
            int len = 0;
            while (-1 != (len=reader.read(flush))) {
                writer.write(flush,0,len);
            } */

           //新增方法,使用新增方法不能产生多态
            String line = null;
            while (null != (line=reader.readLine())) {
                writer.write(line);
                writer.newLine();   //换行
            }
            writer.flush();//强制刷出
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println("源文件不存在");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件读取失败");
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (null != reader) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值