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();
	}
	}
发布了9 篇原创文章 · 获赞 17 · 访问量 1089

猜你喜欢

转载自blog.csdn.net/qq_41821963/article/details/86703184