Java IO流--使用缓冲流实现非文本文件和文本文件的复制

Posted 路宇_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java IO流--使用缓冲流实现非文本文件和文本文件的复制相关的知识,希望对你有一定的参考价值。

处理流之一:缓冲流
缓冲流:

BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter

作用:
提供流的读取,写入的速度。
提高读写速度的原因:内部提供了一个缓冲区。
处理流就是’'套接"在已有的流的基础上

上代码:
注释都已经在代码中给出

一、实现非文本文件的复制操作

	@Test
    public void test1() {
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            //1.造文件
            File file = new File("工作二维码.png");
            File file1 = new File("工作二维码2.png");

            //2.造流
            //2.1造节点流
            FileInputStream fis = new FileInputStream(file);
            FileOutputStream fos = new FileOutputStream(file1);
            //2.2造缓冲流
            bis = new BufferedInputStream(fis);
            bos = new BufferedOutputStream(fos);

            //3.复制的细节:读取,写入
            byte[] buffer = new byte[5];
            int len;
            while ((len = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, len);
            }
        } catch (Exception e) {
                e.printStackTrace();
        } finally {
            //4.关闭资源
            //要求:先关闭外层的流,再关闭内层的流
            //在关闭外层流的同时,内层的流也会自动关闭,所以关于内层流的关闭,我们可以省略。
            if (bis !=null){
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bos!=null){
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

二、实现文本文件的复制

@Test
    public void testBufferedReaderBufferedWriter() {
        BufferedReader bufferedReader = null;
        BufferedWriter bufferedWriter = null;
        try {
            //创建文件和相应的缓冲流
            bufferedReader = new BufferedReader(new FileReader(new File("学习记录.txt")));
            bufferedWriter = new BufferedWriter(new FileWriter(new File("学习记录4.txt")));

            //复制文件:读取和写入
            //方式一:使用char[]数组
//            char[] chars = new char[1024];
//            int len;
//            while ((len = bufferedReader.read(chars)) != -1) {
//                bufferedWriter.write(chars, 0, len);
//            }
            //方式二:使用String
            String data;
            while ((data=bufferedReader.readLine())!=null){
//                bufferedWriter.write(data+"\\n");
                bufferedWriter.write(data);//data中不包含换行符
                bufferedWriter.newLine();//提供换行的操作
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bufferedWriter != null) {
                try {
                    bufferedWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

以上是关于Java IO流--使用缓冲流实现非文本文件和文本文件的复制的主要内容,如果未能解决你的问题,请参考以下文章

Java IO流

java基础第十三天IO接口

Java基础—IO小结缓冲流与其它流的使用

IO流26 - 字符流 - 使用字符缓冲区流对象复制文本文件

java 中简述使用流进行读写文本文件的步骤?

Java IO流