JAVA进阶——I/O(2)

之前介绍了字节流的读写,现在看看字符流的读写。其实字符流的读写是在字节流的读写的基础上完成的。通过读取字节流,获得了字节,然后再进行封装。所以JAVA流的本质还是字节。

 

字符流的读写主要这几个类:FileReader和FileWriter,BufferedReader和BufferedWriter。其类之间关系如下:



 

FileReader和FileWriter,BufferedReader和BufferedWriter它们之间的关系与字节流中的FileInputStream和FileOutputStream,BufferedInputStream和BufferedOutputStream差不多。

 

BufferedReader继承Reader类,同时还保存一个Reader变量,还有一个缓存;

同理,BufferedWriter继承Writer,同时还保存一个Writer变量,还有一个缓存;

道理与I/O(1)所讲差不多。相对FileReader和FileWriter,一般广泛使用的都是BufferedReader和BufferedWriter。正如之前所说的,字符流的操作都是针对字符和字符数组的操作,所以这流的基本单位是字符,即char。比如reader.read()返回的就是一个字符的整数值,而不是字节了。

字符流相对字节流而言,是一个更高级的抽象,所以其函数也会更加强大。例如BufferedReader里提供一个函数readLine()直接读取文件的一行字符,但是BufferedWriter没有提供相应的wirteLine()函数,但是可以在要写的内容加上"\r\n"即完成换行。看下面的示例代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class Main {
	public static void main( String []args ){
		File source = new File( "/home/ziyao/source.java");
		File dest = new File( "/home/ziyao/dest.java" );
		
		FileReader fr = null;
		FileWriter fw = null;
		try{
			fr = new FileReader( source );
			fw = new FileWriter( dest );
			
			//注意两个类的构造参数是相应的父类:Reader和Writer
			BufferedReader br = new BufferedReader( fr );
			BufferedWriter bw = new BufferedWriter( fw );
			String line = null;
			while( ( line=br.readLine())!=null ){
				//BufferedWriteri没有相应的writeLine函数,
				//所以写回去的时候,要加上"\r\n"
				bw.write( line+"\r\n" );
			}
		}catch( Exception e ){
			e.printStackTrace();
		}finally{
			try{
				fr.close();
				fw.close();
			}catch( Exception e){
				e.printStackTrace();
			}
		}
		
		
		
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值