JAVA中的IO流(三)字符流

前言

本章为IO流的完结篇,主要介绍字符流。

介绍

字符流就是操作字符的,它的底层是通过字节流实现的,顶层类为:Reader、Writer都是抽象类,以下是它们的子类。注意:以下代码算是伪代码,记得处理异常。

FileReader、FileWriter

文件字符流是跟文件打交道的,有参构造方法需要文件路径或者File对象,其他的构造就不写了

//流的使用
//构造
//		FileWriter fileWriter = new FileWriter(("c:/d.txt");可以直接访问文件路径
		FileWriter fileWriter = new FileWriter(new File("c:/d.txt"));
//写
		fileWriter.write("aaaaaaaaaaa");
		fileWriter.close();
		FileReader fileReader = new FileReader(new File("c:/d.txt"));
//读
		int readline = -1;
//这里面读到的是是int值需要转为char
		while ((readline = fileReader.read()) != -1) {
			System.out.println((char) readline);
		}
		fileReader.close();

BufferedReader、BufferedWriter

从上面的流可以看出无论是读还是写都只能一个一个的进行操作,而使用了缓冲字符流可以让我们一行一行的读写,可以提高效率。同时BufferedWriter还提供了特有的换行功能。

//流的使用
//构造
	BufferedReader reader = new BufferedReader(new FileReader(new File("c:/xx.txt")));
	BufferedWriter writer = new BufferedWriter(new FileWriter(new File("c:/xx.txt")));
//读写
	String line = null;
// 取出字符串,读写
	while ((readLine = reader.readLine()) != null) {//读完返回null
		line = readLine;
		writer.write(line);
		writer.newline();//换行
	}
	reader.close();
	writer.close();
InputStreamReader、OutputStreamWriter

InputStreamReader是字节流通向字符流的桥接,而OutputStreamWriter是字符流通向字节流的桥接,说实话我也不是很懂,反正返回的流可以当做字符流用,也就是可以将字节流转为字符流。
而它们的构造里需要字节流,如果还需要读写操作用缓冲字符流包裹即可。

//流的使用
//构造
	InputStreamReader reader=new InputStreamReader(new FileInputStream(new File("c:/xx.txt")));
	OutputStreamWriter writer=new OutputStreamWriter(new FileOutputStream(new File("c:/xx.txt")));
PrintWriter

打印流,只有输出流。有了这个可以代替上面的输出流,不用那么麻烦的去包装流了。由于它的构造里可以有很多流所以为很多流添加了输出功能,它是以输出为目的的,不负责数据源。关于它的异常不涉及IO异常。

//流的使用
//构造
	PrintWriter pw1=new PrintWriter("c:/xx.txt");//可以直接操作文件路径
	PrintWriter pw2=new PrintWriter(new File("c:/xx.txt"));
	PrintWriter pw3=new PrintWriter(new FileWriter("c:/xx.txt"));//参数可以为Writer
	PrintWriter pw4=new PrintWriter(new FileOutputStream(new FileOutputStream(new File("c:/xx.txt")));//参数可以为OutputStream

打印流的print和write都可以完成写操作,然而还是有区别的

pw1.write(97);//实际写到文件会编码成'a'
pw1.print(97);//你写啥它写啥
pw1.println("aaa");//可以直接换行了,比包装流强多了

总结

IO流篇完结,接下来努力看看集合的源码,加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值