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