java的IO流中使用五种不同方法实现文件的复制功能

在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();
	}
	}
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值