java基础回顾之 流(FileReader/FileWriter)字符流, 以字符为单位读写数据 包含文件复制

574 篇文章 4 订阅

文件复制

package com.bjpowernode.demo01;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 文件复制
 * @author Administrator
 *
 */
public class Test08 {

	public static void main(String[] args) {
		String  srcFile = "D:\\course\\03-JavaSE\\video\\JavaSE-084以字节数组为单位读取.avi";
		String destFile = "d:/hehe.avi";
		
		copyFile(srcFile, destFile);
	}
	//一次复制一个字节数组, 自动关闭流, 异常处理
	public static void copyFile(String srcFilename, String destFilename) {
		try (
				FileInputStream fis = new FileInputStream(srcFilename);
				FileOutputStream fos = new FileOutputStream(destFilename);
				){
			byte [] bytes = new byte[1024];
			int len = fis.read(bytes);
			while( len != -1  ){
				//把读到的字节都写到输出流中
				fos.write(bytes, 0, len);
				len = fis.read(bytes);
			}
		} catch (Exception e) {
		}
	}
	
	//按字节进行文件复制
	public static void copyFile2(String srcfilename,  String destFileName) {
		FileInputStream fis = null;
		FileOutputStream fos = null ;
		try {
			fis = new FileInputStream(srcfilename);
			fos = new FileOutputStream(destFileName);
			
			int cc = fis.read();
			while( cc != -1 ){
				//对读到的字节cc进行处理, 把cc写到输出流中
				fos.write(cc);
				cc = fis.read(); 		//读下个字节
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			if ( fis != null ) {
				try {
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (fos != null ) {
				try {
					fos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
	}
}

在这里插入图片描述

package com.bjpowernode.demo03;

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

/**
 * FileReader/FileWriter
 * 	字符流, 以字符为单位读写数据
 * 注意:
 * 		1)只能读写纯文本文件
 * 		2)要求读写的文件编码格式与当前环境的编码格式兼容
 * 
 * @author Administrator
 *
 */
public class Test01 {

	public static void main(String[] args) throws IOException {
		
		String filename = "d:/log.txt"; 		//log.txt是UTF-8编码
//		String filename = "d:/out.txt"; 		//out.txt是GBK编码, 当前环境是utf-8,乱码
//		readFile(filename);

		filename = "d:/hehe.txt";
		writeFile( filename );
		
	}

	private static void writeFile(String filename) throws IOException {
		FileWriter fw = new FileWriter(filename);
		fw.write("hello");
		fw.write("\r\n");    //在Windows操作系统中换行使用'\r' '\n'这两个字符
		fw.write("一次可以写一个字符串");
		fw.write("注意,文件的编码格式与当前环境的编码格式一致 ");
		fw.close();
	}

	private static void readFile(String filename) throws IOException {
		FileReader fr = new FileReader(filename);
		//一次读取一个字符数组, 返回字符的个数, 读到文件末尾返回-1
		char [] contents = new char[8];
		int len = fr.read(contents);
		while( len != -1 ){
			//把读到的字符转换为字符串打印
			System.out.print( new String(contents , 0 , len ));
			len = fr.read(contents);
		}

		fr.close();
	}
	private static void readFile2(String filename) throws IOException {
		FileReader fr = new FileReader(filename);
		//一次读取一个字符, 返回字符的码值, 读到文件末尾返回-1
		int cc = fr.read();
		while(cc != -1){
			System.out.print( (char)cc );
			cc = fr.read();
		}
		fr.close();
	}

}

package com.bjpowernode.demo03;

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


/**
 * 使用FileReader/FileWriter实现文本文件的复制
 * @author Administrator
 *
 */
public class Test02 {

	public static void main(String[] args) {
		
		String srcFile = "D:/course/JavaProjects/03-JavaSE/Day08/src/com/bjpowernode/demo03/Test01.java"	;
		String destFile = "d:/test01.java"	;
		
		copyFile( srcFile, destFile);
	}
	//一次复制一个字符数组, 自动关闭流
	private static void copyFile(String srcFile, String destFile) {
		try (
				FileReader fr = new FileReader(srcFile);
				FileWriter fw = new FileWriter(destFile);
				){
			char [] contents = new char[20];
			int len = fr.read(contents);
			while( len != -1 ){
				fw.write(contents, 0 , len);
				 len = fr.read(contents);
			}
			
		} catch (Exception e) {
		}
	}
	
	// 一次复制一个字符, 手动关闭流, 异常处理
	private static void copyFile2(String srcFile, String destFile) {
		FileReader fr = null; 
		FileWriter fW = null; 
		try {
			fr = new FileReader(srcFile);
			fW = new FileWriter(destFile);
			
			int cc = fr.read();
			while( cc != -1){
				fW.write(cc);
				cc = fr.read();
			}
			
		} catch (Exception e) {
			
		}finally {
			if ( fr != null) {
				try {
					fr.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (fW != null ) {
				try {
					fW.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
	}

}

查找项目所在磁盘的绝对路径:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值