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); } }
