java学习笔记(32)IO字符流

32、IO字符流


1、概述

以字符形式传输数据,其他与字节流相似

2、输入流Reader

Reader是字符输入流的最顶层父类,抽象类

方法:

int read();//读取单个字符并返回
int read(cahr[] cbuf);//一次读取多个字符,将字符读入数组

2.1、常用子类

FileReader类继承InputStream继承Reader类

文件字符输入流

构造

FileReader(String Filename);
FileReader(File file);

参数

读取文件的数据源

作用

  1. 创建一个FileReader对象
  2. 会把FileReader对象指向要读取的文件

使用步骤

  1. 创建Filereader对象,构造方法中绑定文件
  2. 使用Read方法读取文件
  3. 释放资源

3、输出流Writer

所有字符输出流的最顶层父类,抽象类

方法

abstract  void close()
关闭此流,但要先刷新它。
  abstract  void flush()
刷新该流的缓冲。
 void write(char[] cbuf)
  写入字符数组。
  abstract  void write(char[] cbuf, int off, int len)
 写入字符数组的某一部分。
   void write(int c)
 写入单个字符。
  void write(String str)
 写入字符串。
   void write(String str, int off, int len)
 写入字符串的某一部分。

3.1、常用子类

FileWriter继承OutputStream继承Write

文件字符输出流

作用:把内存中的字符数据写入文件

构造

FileWriter(File file)
//根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(String fileName)
//根据给定的文件名构造一个 FileWriter 对象。

参数

写入数据的目的地

构造的作用

  1. 回创建一个FileWriter对象
  2. 会根据构造传递的文件/路径,创建文件
  3. 会把FileWriter对象指向创建好的文件

使用步骤

  1. 创建对象,构造中传递目的地
  2. 使用write方法,把数据写入内存缓冲区(字符转字节)
  3. 使用flush方法,把内存缓冲区的数据刷新到文件中
  4. 释放资源

flush和close的区别

  1. flush刷新数据后还可以继续使用流对象
  2. close不可再次使用

4、使用try/catch处理流对象异常

正常使用try/catch处理需要在外面声明在try里面新建对象

FileWriter fw = null;
try{
	代码
}catch(){
	
}finalle{
	if(fw!=null){
		try{
			fw.close();
		}catch(){
			//处理
		}
	}
}

如果一开始创建对象失败,finally会空指针异常,所以加if判断

因为close有异常,所以要再次try/catch

在jdk7中,可以在try后面加一个(),里面定义流对象,这个流对象的作用域是try,执行完毕会自动释放,不用finally中写close

try(流对象){
	语句
}catch(异常){
	处理
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值