复制文本文件

复制文本文件


    需求:把项目路径下的a.txt中的内容复制到项目路径下的b.txt中


    文件复制:
                    数据源: a.txt--读数据--FileReader 
                    目的地: b.txt--写数据--FileWriter


方法1.使用基本流FileWriter( )和FileReader( )

package com.mytest;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
 * 需求:把项目路径下的a.txt中的内容复制到项目路径下的b.txt中
 * 
 * 文件复制也是有规律可循的
 * 
 * 数据源: a.txt--读数据--FileReader
 * 
 * 目的地: b.txt--写数据--FileWriter
 * 
 */
public class CopyFileDemo {
	public static void main(String[] args) throws IOException {
	  //创建输入流对象
		FileReader fr = new FileReader("a.txt");
	  //创建输出流对象
		FileWriter fw = new FileWriter("b.txt");
		
		/*
       //方法1:一次读写一个字符复制文本文件
		int ch;
		while((ch=fr.read())!=-1){
			fw.write(ch);
		}
        */

        //方法2:一次读写一个字符数组复制文本文件
		char[] chs = new char[1024];
		int len;
		while((len=fr.read(chs))!=-1) {
			fw.write(chs, 0, len);
		}

		
		//释放资源
		fw.close();
		fr.close();
	}
	
}

方法2:使用缓冲流 BufferedWriter和BufferedReader

如果使用缓冲流 BufferedWriter和BufferedReader,只需改一下对象的定义

1.创建输出缓冲流对象

     BufferedWriter(Writer out) :创建一个使用默认大小输出缓冲区的缓冲字符输出流

     例如: BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));


2.创建输入缓冲流对象     

      BufferedReader(Reader in):创建一个使用默认大小输入缓冲区的缓冲字符输入流

      例如:BufferedReader br = new BufferedReader(new FileReader("br.txt"));

package com.mytest;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
 * 需求:
 * 		把项目路径下的a.txt中的内容复制到项目路径下的b.txt中
 * 
 * 数据源:
 * 		a.txt -- 读数据 -- FileReader -- 高效的读数据 -- BufferedReader
 * 目的地:
 * 		b.txt -- 写数据 -- FileWriter -- 高效的写数据 -- BufferedWriter
 */
public class CopyFileDemo {
	public static void main(String[] args) throws IOException {
		//创建输入缓冲流对象
		BufferedReader br = new BufferedReader(new FileReader("a.txt"));
		//创建输出缓冲流对象
		BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
		
		//读写数据
		/*
		//方法1:一次读写一个字符
		int ch;
		while((ch=br.read())!=-1) {
			bw.write(ch);
		}
		*/
		
		
       //方法2:一次读写一个字符数组
		char[] chs = new char[1024];
		int len;
		while((len=br.read(chs))!=-1) {
			bw.write(chs,0,len);
		}
		
		//释放资源
		bw.close();
		br.close();
	}
}

方法3:使用 缓冲流特殊功能复制文本文件(重点掌握)

     BufferedReader

     String readLine( ):一次读取一行数据,但是不读取换行符

package com.mytest;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
 * 需求:
 * 		把项目路径下的a.txt中的内容复制到项目路径下的b.txt中
 * 
 * 数据源:
 * 		a.txt -- 读数据 -- FileReader -- 高效的读数据 -- BufferedReader
 * 目的地:
 * 		b.txt -- 写数据 -- FileWriter -- 高效的写数据 -- BufferedWriter
 */
public class CopyFileDemo {
	public static void main(String[] args) throws IOException {
		//创建输入缓冲流对象
		BufferedReader br = new BufferedReader(new FileReader("a.txt"));
		//创建输出缓冲流对象
		BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
		
		//读写数据
		String line;
		while((line=br.readLine())!=null) {
			bw.write(line);
			bw.newLine();
			bw.flush();
		}
		//释放资源
		bw.close();
		br.close();
	}
}

复制文本文件的5中方式汇总:

方法1:基本流一次读写一个字符

方法2:基本流一次读写一个字符数组

方法3:缓冲流一次读写一个字符

方法4:缓冲流一次读写一个字符数组

方法5:缓冲流一次读写一行字符串(重点掌握)

package com.mytest;

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 = "a.txt"; // 源文件
		String desFileName = "b.txt"; // 目标文件

		        method1(srcFileName,desFileName);
		     // method2(srcFileName,desFileName); 
             // method3(srcFileName,desFileName);
		     // method4(srcFileName,desFileName);
             // method5(srcFileName,desFileName);
         
		 
	}

	// 方法1:基本流一次读写一个字符
	public static void method1(String srcFileName, String desFileName)
			throws IOException {
		// 创建输入流对象
		FileReader fr = new FileReader(srcFileName);
		// 创建输出流对象
		FileWriter fw = new FileWriter(desFileName);

		// 一次读写一个字符
		int ch;
		while ((ch = fr.read()) != -1) {
			fw.write(ch);
		}

		// 释放资源
		fw.close();
		fr.close();
	}

	// 方法2:基本流一次读写一个字符数组
	public static void method2(String srcFileName, String desFileName)
			throws IOException {
		// 创建输入流对象
		FileReader fr = new FileReader(srcFileName);
		// 创建输出流对象
		FileWriter fw = new FileWriter(desFileName);

		// 一次读写一个字符数组
		char[] chs = new char[1024];
		int len;
		while ((len = fr.read(chs)) != -1) {
			fw.write(chs, 0, len);
		}

		// 释放资源
		fw.close();
		fr.close();
	}

	// 方法3:缓冲流一次读写一个字符
	public static void method3(String srcFileName, String desFileName)
			throws IOException {
		// 创建输入缓冲流对象
		BufferedReader br = new BufferedReader(new FileReader(srcFileName));
		// 创建输出缓冲流对象
		BufferedWriter bw = new BufferedWriter(new FileWriter(desFileName));

		// 一次读写一个字符
		int ch;
		while ((ch = br.read()) != -1) {
			bw.write(ch);
		}

		// 释放资源
		bw.close();
		br.close();
	}

	// 方法4:缓冲流一次读写一个字符数组
	public static void method4(String srcFileName, String desFileName)
			throws IOException {
		// 创建输入缓冲流对象
		BufferedReader br = new BufferedReader(new FileReader(srcFileName));
		// 创建输出缓冲流对象
		BufferedWriter bw = new BufferedWriter(new FileWriter(desFileName));

		// 一次读写一个字符数组
		char[] chs = new char[1024];
		int len;
		while ((len = br.read(chs)) != -1) {
			bw.write(chs, 0, len);
		}

		// 释放资源
		bw.close();
		br.close();
	}

	// 方法5:缓冲流一次读写一行字符串(重点掌握)
	public static void method5(String srcFileName, String desFileName)
			throws IOException {
		// 创建输入缓冲流对象
		BufferedReader br = new BufferedReader(new FileReader(srcFileName));
		// 创建输出缓冲流对象
		BufferedWriter bw = new BufferedWriter(new FileWriter(desFileName));

		// 一次读写一行字符串
		String line;
		while ((line = br.readLine()) != null) {
			bw.write(line);
			bw.newLine(); // 换行
			bw.flush();
		}

		// 释放资源
		bw.close();
		br.close();
	}

}

猜你喜欢

转载自blog.csdn.net/weixin_44706512/article/details/89284083