黑马程序员 IO 字符流中 的读取 和 写入

本文介绍了Java中的字符流FileWriter和FileReader的使用,包括如何创建文件、写入和读取文件内容。FileWriter用于写入文件,使用write()方法和flush()方法确保数据写入,如果文件已存在,会覆盖原有内容。FileReader用于读取文件,通过read()方法读取字符,当读取到文件末尾时返回-1。同时文章强调了异常处理和流关闭的重要性。
-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------
IO 流常用的基类。

字节流的抽象基类;
inputStream  outputStream。

字节流的抽象基类。
Reader  Writer

在它们前面加上 File 就是他么这四个 抽象基类的子类
注意;这四个类派的子类的子类的名称都是以其父类名作为子类名的后缀。
如;inputStream 的子类 FileInputStream 
  Reader  的子类  FileReader

它们使用来对文件进行读取和 写入的.

这四者当中先从字节流说起 

1,FileWriter 写入流,把想写的东西写到文件中,个人理解好记忆
	FileWriter 这是一个用来写入的流,就是说我想在,电脑的任意盘中
	新建一个文件夹,平时我们都是鼠标右键,然后新建,当我们学习到FileWriter
	的时候,不用那样就可以来完成;例如
	FileWriter  fr = new FileWriter("c:\\Demo.java");
	
	这句话的意思就是说,在 c:\下新建一个叫Demo.java的文件,
	现在我们文件创建好了,我们要往这个文件中写点东西啊;
	那就要用到里面的方法  write(); 此方法再用的时候,就要刷新用到的方法是flush();
	如果是不刷的话那么,写的东西是不会到指定的文件中去的,只是在流中,close();这个方法也是
	有刷新作用的,就是说到最后,在关闭流的时候,就可以一次性把流中的东西刷到要指定目录中.
	还有就是用FileWriter 在写文件的时候,只要是这个文件时存在的话,那么它就会覆盖前面
	文件里面的内容,那我们怎么能在后面在写点东西呢.那就是在创建 Writer 对象的时候这样创建new FileWriter("c:\\Demo.java",true);
	我们可以直接,把想写的东西写到里面,也可以把字节变成字符数组,先写到
	数组中,再通过write();把内容写到指定目录中.

2,FileReader 写出流,就是把文件里面的东西写出来,个人理解好记忆
上面我们写过了那么现在就是读了,试想一下在我们平时读书的时候肯定是
要先有书我们才能读,我们就现在自己的硬盘中找一份文件来读 那么用到的
对象就是 ; FileReader fr = new FileReader("c:\\Demo.java");这是关联一份文件.
现在文件有了 那么就要开始读了.用到的方法就是 read();我们在读到最后都没有内容
了那这个时候,怎么还能继续往下读呢.所以这里面 要有判断的标记 -1,只要是读到-1说明就结束了;
main(String[] args){
	FileReader fw= new FileReader("c:\\Demo.java");
			int len =-1;
			while((len = fw.read())!=-1){
				System.out.print((char)len);
		}
}
还有另外一种向外写的方式,就是先写到char[] 数组中.再将char数组转换成
字符 写出去,判断的方式还是不变的
main(String[] args){
	FileReader fw= new FileReader("c:\\Demo.java");
		char[] arr= new char[1024];
		int len =-1;
		while((len = fw.read(arr))!=-1){
			System.out.print(new String(arr,0,len));
	}
}

读和写 说完了 就要说一下 对异常的处理了
在处理的时候要注意 ,关闭流的动作是一定要执行的,所以要放在finally中来完成
有多少流 就要对应的有多少 finally;因为close();方法在关闭流的时候会有异常
所以还要在,finally中做 try {} catch(){}处理.
main(String[] args){
	FileWriter fw= null;
		try{
			fw= new FileWriter("c:\\Demo.java");
			fw.write("你好,我是程序员");
		}catch(Exception e){
			System.out.println(e.toString());
		}
		finally{
			try{
				if(fw !=null )
					fw.close();
			}catch(Exception e1){
				System.out.println(e1.toString());
			}
		}	
}
-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值