IO流丶复制文件方式

来源:互联网 发布:程序员要学什么 编辑:程序博客网 时间:2024/06/05 05:33

InputStream (能产生流的对象,父类)>FileInputStream(创建输入流对象)>BufferedInputStream(缓存字节输入流)                      已字节流的方式读取数据

Reader  (父类)  >InputStreamReader(将字节流转换为字符流)>FileReader(创建输入流对象)                                                                已字符流的方式读取数据

                                  >BufferedReader(缓冲的字符输入流)


同样:

OutputStream (能保存流的对象,父类)>FileOutputStream(创建输出流对象)>BufferedOutputStream(缓存字节输出流)            

Writer(父类)       >OutputStreamWriter( 将字节流转换为字符流)>FileWriter(创建输出流对象)                                                                

                                  >BufferedWriter(缓冲的字符输出流)



package liu;import java.io.*;/** * 两种流的方式复制文件 * Created by Administrator on 2017/9/1. */public class Copy {    //以字符流缓冲对象复制    public boolean FileReaderCopy(String redStr,String wrtStr) throws Exception{        FileReader fr = new FileReader(redStr);        FileWriter fw = new FileWriter(wrtStr,true);        BufferedReader bufr = new BufferedReader(fr);        BufferedWriter bufw = new BufferedWriter(fw);        //一行一行的写。        String line = null;        while((line = bufr.readLine()) != null){            System.out.println(line);            bufw.write(line);            bufw.newLine();            bufw.flush();        }        bufr.close();        bufw.close();        return true;    }    //以字节流缓冲复制    public boolean InputStreamCopy(String redStr,String wrtStr) throws Exception{        FileInputStream fis = new FileInputStream(redStr);        FileOutputStream fos = new FileOutputStream(wrtStr,true);        BufferedInputStream bis = new BufferedInputStream(fis);        BufferedOutputStream bos = new BufferedOutputStream(fos);        int i = 0;        while ((i=bis.read())!=-1){            System.out.println(i);            bos.write(i);            bos.flush();        }        bis.close();        bos.close();        return true;    }    public static void main(String[] args) throws Exception {        Copy inputStreamH = new Copy();        boolean result = inputStreamH.InputStreamCopy("D:\\aaa.txt","D:\\bbb.txt");        System.out.println("以字节流来复制文件(无中文乱码)"+result);        boolean re = inputStreamH.FileReaderCopy("D:\\aaa.txt","D:\\bbb.txt");        System.out.println("以字符流来复制文件(中文乱码)"+re);    }    }