Java的IO(输入输出)详谈——字符流

Java还提供了字符流,用于操作字符。与字节流相似,字符流也有两个抽象基类,分别是Reader和Writer。Reader是字符输入流,用于从目标文件读取字符;Writer是字符输出流,用于向目标文件写入字符。

其中FileReader和FileWriter是两个很常用的子类,FileReader类用来从文件中读取字符,操作文件的字符输入流。
接下来用一个案例来说明:

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class TestFileReader {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		File file=new File("read.txt");
		FileReader fr=new FileReader(file);
		int len;   		//定义len,记录读取的字符
		//判断是否读取到文件的末尾
		while((len=fr.read())!=-1) {
			//打印内容
			System.out.print((char)len);
		}
		fr.close();
	}

}

运行结果:
在这里插入图片描述

与FileReader类对应的FileWriter类,它用来将字符写入文件,操作文件字符输出流的。

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class TestFileWriter {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		File file=new File("read.txt");
		FileWriter fw=new FileWriter(file);
		fw.write("Hello World!!!");
		System.out.println("已保存到read.txt!");
		fw.close();
	}

}

字符流的缓冲区
字符流中缓冲区的流分别是BufferedReader类和BufferedWriter类,其中BufferedReader类用于对字符输入流进行包装,BufferedWriter类用于对字符输出流进行包装,包装后会提高字符流的读写效率。
接下来通过一个案例来演示缓冲区。

首先创建一个src.txt文件,文件内容为

Hello World!!!
I am computer student
I love computer

然后开始编写代码:

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

public class TestCopyBuffered {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		FileReader fr=new FileReader("src.txt");
		FileWriter fw=new FileWriter("tar.txt");
		BufferedReader br=new BufferedReader(fr);
		BufferedWriter bw=new BufferedWriter(fw);
		String str;
		//每次读取一行文本,判断是否到文件末尾
		while((str=br.readLine())!=null) {
			fw.write(str);
			//写入一个换行符,该方法会根据不同操作系统生成对应的换行符
			bw.newLine();
			bw.flush();
		}
		bw.close();
		br.close();
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值