Java输入输出流八:字符流之FileReader和FileWriter复制文件;带缓冲的FileReader和FileWriter复制文件;readLine()方法的应用;换行符

本文介绍使用Java的FileReader和FileWriter进行文件复制的方法,包括不使用缓冲流的基本复制过程,使用BufferedReader和BufferedWriter增强效率的复制过程,以及如何利用readLine()方法逐行读取并处理文件内容。

一:FileReader和FileWriter文件复制范例:

(1)可见,FileReader和FileWriter的使用,和前面的字节流,其他字符流类的使用情况类似;

(2)这儿没有使用缓冲流;而以前在处理文档时,常用的readLine()方法是BufferedReader类的

public class ReaderDemo2 {
public static void main(String[] args) {
		
		try {
			FileReader fr = new FileReader("imooc.txt");
			FileWriter fw = new FileWriter("imooc2.txt");
			int n = 0;
			char[] cbuf = new char[10];
			while((n = fr.read(cbuf))!= -1){
				fw.write(cbuf, 0, n);
			}
			fw.flush();
			fr.close();
			fw.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e){
			e.printStackTrace();
		}
	}

}

二:带缓冲的FileReader和FileWriter复制文件

(1)其中流的连接,其操作模式和其他情况类似

public static void main(String[] args) {
		
		try {
			FileReader fr = new FileReader("imooc.txt");
			FileWriter fw = new FileWriter("imooc2.txt");
			BufferedReader br = new BufferedReader(fr);
			BufferedWriter bw = new BufferedWriter(fw);
			int n = 0;
			char[] cbuf = new char[10];
			while((n = br.read(cbuf))!= -1){
				bw.write(cbuf, 0, n);
			}
			fw.flush();
			fr.close();
			fw.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e){
			e.printStackTrace();
		}
	}
}

三:ReadLine()方法的应用

readLine():该方法时BufferedReader类中的

public class ReaderDemo2 {
public static void main(String[] args) {
		
		try {
			FileReader fr = new FileReader("imooc.txt");
			FileWriter fw = new FileWriter("imooc2.txt");
			BufferedReader br = new BufferedReader(fr);
			BufferedWriter bw = new BufferedWriter(fw);
			
			String s;
			while((s = br.readLine())!= null){
				// 这儿可以添加各种对本行文档的处理程序
				s = s+"hahaha";
				bw.write(s);
				bw.newLine();   // 这种换行方式,在不同的系统中不一样,会存在问题
			}
			bw.flush();
			fr.close();
			fw.close();
			br.close();
			bw.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e){
			e.printStackTrace();
		}
	}
}

四:换行符

不同的系统中,换行符是不同的:

●Windows:\r\n;

●Linux:\r;

●mac:\n

一般开发是在Windows环境下开发,而项目部署到Linux系统上;

而上面用到的newLine(),在在不同的系统上都会产生换行的效果,但实际对应的字符是不同的。由此会引发一些问题,在实际开发中,如若涉及可能由此引发的问题,需要解决一下。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值