Java基础 FileReader-FileWriter / 缓冲字符输入输出流 / 缓冲字节输入输出流 三种方式 进行文本文件的复制

时间:2022-07-04 21:00:33

易错的地方:

/** 出错的地方:
 *      1.缓冲流儿输出时,务必:flush();不然可能输出不尽!
 *      2. bw缓冲字符输出流,记得这里! bw.write(b,0,len);
 *      3.字符流不能复制除 纯文本文件 以外的其他文件,不然会损坏!!
 *      *1.对于非文本文件(视频/音频/图片)使用, 只能使用(字节)byte流! 也可以使用转换流提高速度233
 *      * 2.对于文本文件 ,大型文件的话,建议使用字符流(FileReaderWriter)!
 */

总的笔记:

/** 出错的地方:
 *      1.缓冲流儿输出时,务必:flush();不然可能输出不尽!
 *      2. bw缓冲字符输出流,记得这里! bw.write(b,0,len);
 *      3.字符流不能复制除 纯文本文件 以外的其他文件,不然会损坏!!
 *      *1.对于非文本文件(视频/音频/图片)使用, 只能使用(字节)byte流! 也可以使用转换流提高速度233
 *      * 2.对于文本文件 ,大型文件的话,建议使用字符流(FileReaderWriter)!
 */

/**字符流处理步骤:
 *        ①声明②加载地址③read/write④close流)
 *----------------------------------------------------------------------------
 * 缓冲流(处理流的一种,相较于加速之前的操作)
 *     BufferedInputStream     read()
 *     BufferedOutputStream    write(),flush():刷新一次,确保输出完
 *     BufferedReader         readLine(): 复制一行!
 *     BufferedWriter         flush()  //刷新一次,确保输出完

 

三种方式:

//实验1: 同时使用FileReader / FileWriter 进行文本文件的复制,不支持中文!
@Test   //实验1: 同时使用FileReader / FileWriter 进行文本文件的复制,不支持中文!
    public void testFileReaderWriter() throws IOException {
        FileReader  fr=null;
        FileWriter  fw=null;
        File src=new File("D:\\SZS文件夹\\IO\\hello.txt");
        File dest=new File("D:\\SZS文件夹\\IO\\复制的hello.txt");
        try {
            fr=new FileReader(src);
            fw=new FileWriter(dest);
            char[] ch= new char[10];
            int len=0;
           while((len=fr.read(ch))!=-1 ){
               fw.write(ch);
           }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            fr.close();
            fw.close();
        }
    }

 

//实验2: 同时使用BufferInputStream和BufferOutputStream进行图片 的复制
 @Test  //实验2: 同时使用BufferInputStream和BufferOutputStream进行图片 的复制
    public void testBufferStream() throws IOException{
        //①声明②加载字节流,缓冲流③read/write④close缓冲流)
        File src=new File("D:\\SZS文件夹\\IO\\TIM截图20181017161349.png");
        File dest=new File("D:\\SZS文件夹\\IO\\复制的TIM截图.png");
        FileInputStream fis= new FileInputStream(src);
        FileOutputStream fos = new FileOutputStream(dest);

        BufferedInputStream bis=new BufferedInputStream(fis);
        BufferedOutputStream bos=new BufferedOutputStream(fos);

        byte[] b=new byte[1024];
        int len;
        while((len=bis.read(b))!=-1)
            bos.write(b,0,len);

        bis.close();
        bos.close();
    }

 

//实验3: 同时使用BufferedReader 和 BufferedWriter 进行文本的复制
  @Test  //实验3: 同时使用BufferedReader 和 BufferedWriter 进行文本的复制
    public void testBufferedReaderWriter() throws IOException{
        File src=new File("D:\\SZS文件夹\\IO\\hello.txt");
        File dest=new File("D:\\SZS文件夹\\IO\\BufferedReaderWriter复制的hello.txt");
        //①声明②将地址加载进字符流,将字符流加载进缓冲流③read/write④close缓冲流)
        FileReader fis= new FileReader(src);
        FileWriter fos = new FileWriter(dest);

        BufferedReader bs=new BufferedReader(fis);
        BufferedWriter bw=new BufferedWriter(fos);

        char[] b=new char[1024];
        int len;
        while((len=bs.read(b))!= -1) {
            bw.write(b,0,len);
        }
        bw.flush();
        bs.close();
        bs.close();
    }

 


学习视频地址:http://www.gulixueyuan.com/course/39/task/497/show