三种方法实现 复制txt文件
对文本文件的复制采用字符缓冲输入输出流(BufferedReader/BufferedWriter),三种方法如下:
方法一
定义一个String类型的data变量,让字符缓冲输入流对象调用readLine()方法 按行读取数据,用while循环控制当数据不为空时,将data数据写入,再用对象调用newLine()方法每执行一次循环换行。
public void testbufferedReaderBufferedWrite(){
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
try {
// 创建文件和文件输入出流和字符缓冲输入出流
bufferedReader = new BufferedReader(new FileReader(new File("D:\\学习\\艾瑞\\教学frame\\1004\\node.txt")));
bufferedWriter = new BufferedWriter(new FileWriter(new File("D:\\学习\\艾瑞\\教学frame\\1004\\node1.txt")));
// 方法1:
String data;
while ((data = bufferedReader.readLine()) != null) {
bufferedWriter.write(data);
bufferedWriter.newLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufferedWriter != null) {
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
方法二
在方法一的基础上改进,使用换行转义符。
// 方法2:
String data;
while ((data = bufferedReader.readLine()) != null) {
bufferedWriter.write(data+"\n");
}
方法三
定义一个字符型数组用来存放数据,while流程控制语句判断当字符缓冲输入流对象调用的read()方法读取到的字符数组中的值不为-1时,将字符数组中的数据写入内存。
public void testbufferedReaderBufferedWrite(){
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
try {
// 创建文件和文件输入出流和字符缓冲输入出流
bufferedReader = new BufferedReader(new FileReader(new File("D:\\学习\\艾瑞\\教学frame\\1004\\node.txt")));
bufferedWriter = new BufferedWriter(new FileWriter(new File("D:\\学习\\艾瑞\\教学frame\\1004\\node1.txt")));
char[] cbuf = new char[1024];
int len;
while (-1 != (len = bufferedReader.read(cbuf))) {
bufferedWriter.write(cbuf,0,len);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufferedWriter != null) {
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}