在java的IO流中学习了五种不同的读文件写文件的方法,这里将综合利用这五种不同的方法编写这五种实现文件复制的代码,熟练掌握IO基本流和IO缓冲流。以下是代码的实现。
①基本流一次读一个字符
②基本流一次读一个数组
③缓冲流一次读一个字符
④缓冲流一次读一个数组
⑤缓冲流一次读写一个字符串
最重要的是要掌握第⑤种用缓冲流每次读取一行的字符串的写法,但是要注意的是BufferedReader中的readLine()方法中一次读取一行数据,但是不包括读取换行符,因此需要调用BufferedWriter中的newLine()方法进行换行。
package zjh;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* 用五种方法实现文本文件的复制
* 重点 是掌握最后一种缓冲流每次读写一个一行字符串的方法 ,缓冲流对比与基本流的好处是更加高效
*/
public class CopyFileTest {
public static void main(String[] args) throws IOException {
String srcFileName = "sourceFile.txt";
String endFileName = "copyFile.txt";
method1(srcFileName,endFileName);
method2(srcFileName,endFileName);
method3(srcFileName,endFileName);
method4(srcFileName,endFileName);
method5(srcFileName,endFileName);
}
为了方便讲述我把每种方法单独放在一个代码块
基本流一次读一个字符
public static void method1(String srcFileName,String endFileName) throws IOException {
FileReader fr = new FileReader(srcFileName);
FileWriter fw = new FileWriter(endFileName);
int ch;
while((ch=fr.read())!=-1) {
fw.write(ch);
}
fw.close();
fr.close();
}
基本流一次读一个数组
public static void method2(String srcFileName,String endFileName) throws IOException {
FileReader fr = new FileReader(srcFileName);
FileWriter fw = new FileWriter(endFileName);
char[] chs = new char[1024];
int len;
while((len=fr.read(chs))!=-1) {
fw.write(chs,0,len);
}
fw.close();
fr.close();
}
缓冲流一次读一个字符
public static void method3(String srcFileName,String endFileName) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(srcFileName));
BufferedWriter bw = new BufferedWriter(new FileWriter(endFileName));
int ch;
while((ch=br.read())!=-1) {
bw.write(ch);
}
bw.close();
br.close();
}
缓冲流一次读一个数组
public static void method4(String srcFileName,String endFileName) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(srcFileName));
BufferedWriter bw = new BufferedWriter(new FileWriter(endFileName));
char[] chs = new char[1024];
int len;
while((len=br.read(chs))!=-1) {
bw.write(chs,0,len);
}
bw.close();
br.close();
}
缓冲流一次读写一个字符串
public static void method5(String srcFileName,String endFileName) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(srcFileName));
BufferedWriter bw = new BufferedWriter(new FileWriter(endFileName));
String line;
while((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();//readLine()不读取换行符,需要手动添加newLine()方法
bw.flush();
}
bw.close();
br.close();
}
}