这里存放的文件位置和工程中src目录同级
一、字节流
(1)字节流复制文本文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("b.txt"));
int by = 0;
while ((by = bis.read()) != -1) {
bos.write(by);
}
bos.close();
bis.close();
(2)字节流复制文本文件,用字节数组
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("c.txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d.txt"));
byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read(bys)) != -1) {
bos.write(bys,0,len);
}
bos.close();
bis.close();
二、字符流
(1)字符流复制文本文件,每次读取的数据量大的话要flush
FileReader fr = new FileReader("e.txt");
FileWriter fw = new FileWriter("f.txt");
/**
* 一次复制一个字符
* int ch = 0;
* while((ch = fr.read()) != -1){
* fw.write(ch);
* }
*/
char[] chs = new char[1024];
int len = 0;
while ((len = fr.read(chs)) != -1){
fw.write(chs,0,len);
}
fw.close();
fr.close();
(2)字符缓冲输出流
BufferedWriter bw = new BufferedWriter(new FileWriter("g.txt"));
bw.write("hel");
bw.write("lo");
bw.flush();
bw.close();
(3)字符缓冲输入流读取文件
BufferedReader br = new BufferedReader(new FileReader("h.txt"));
/**
* 一次读取一个字符
* int ch = 0;
* while((ch = br.read()) != -1){
* System.out.print((char)ch);
* }
*/
char[] chs = new char[1024];
int len = 0;
while((len = br.read(chs)) != -1){
System.out.print(new String(chs,0,len));
}
br.close();
(4)字符缓冲流复制文本文件
BufferedReader br = new BufferedReader(new FileReader("i.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("j.txt"));
/**
* 方式1
* String line = null;
* while((line = br.readLine()) != null){
* bw.write(line);
* bw.newLine();
* bw.flush();
* }
*/
//方式2
char[] chs = new char[1024];
int len = 0;
while((len = br.read(chs)) != -1){
bw.write(chs,0 ,len );
bw.flush();
}
bw.close();
br.close();
字符缓冲流的特殊方法: