IO字符流
概述:以字符为单位读写数据,专门处理文本文件。
字符输入流Reader
-
int read()
读取单个字符,可用char()
将对应字节强转为字符,用法与字节输入流类似。 -
int read(char[] cbuf)
将字符读入数组,用String(char[] value)
将字符数组转为字符串。 -
FileReader
文件字符输入流extends InputStreamReader extends Reader
构造方法:
FileReader(File file/String fileName)
,传递数据源,创建对象并指向要读文件。
字符输出流Writer
-
void write(int c)
写入单个字符。 -
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。 -
void write(String str)
写入字符串 。 -
void flush()
刷新该流的缓冲。 -
void close()
关闭此流,但要先刷新它。 -
FileWriter
文件字符输出流extends OutputStreamWriter extends Writer
构造方法:
FileWriter(File file)
,根据给定的 File 对象构造一个FileWriter
对象。续写和换行操作与字节输出流类似。注意:使用步骤与字节输出流有所区别,调用write方法只是将数据写入到内存缓冲区中(字符转换为字节的过程),再调用flush方法才能将数据刷新到文件中,或直接close先刷新再关闭。(前者刷新后流对象可用继续使用,后者不行)
使用try _catch处理流中的异常
FileWriter fw = null; //声明对象,扩大流对象定义范围,能够在finally块中使用
try{
fw = new FileWriter(fileName,true);
for(){
fw.write("str");
}
}catch(IOException e){
//处理异常
}finally{
fw.close; //还需单独进行try _catch,为了防止空指针异常还可在try前判断
}
-
JDK7新特性(最便捷)
try后可增加一个括号在其中定义流对象,仅在try中有效,try中代码执行完毕会自动把流对象释放。
-
JDK9新特性
可在try后括号中直接引用定义好的流对象名称。