Imput Stream和Output Stream类通常是用来处理“字节流”即“恒观”DTU秋史一些啊文件,而Reader和Write类则是用来处理“字符流”的,也就是文本文件。与字节输入输出流的功能一样,字符输入输出流类Reader和Write只是建立一条通往文本文件的通道,而要实现对字符数据的读写操作,还需要相应的读方法和写方法来完成。
Reader类的常用方法
- public int read() 从输入流中读一个字符
- public int read(char[ ]cbuf) 从输入流中读最多cbuf. length个字符,存入字符数组cbuf中
- public int read(char[ ]buffer,int off,int len) 从输入流中读最多len个字符,存入字符数组cbuffer中从off开始的位置
- public long skip(long n) 从输入流中最多向后跳n个字符
- public boolean ready() 判断流是否做好读的准备
- public void mark(int read AheadLimit ) 标记输入流的当前位置
- public boolean markSupported () 测试输入流是否支持mark
- public void reset() 重定位输入流
- public void close() 关闭输入流
Writer类的常用方法
- public void write(int c) 将单一字符c输出到流中
- public void write(String str) 将字符串str输出到流中
- public void write(char[]cbuf) 将字符数组cbuf输出到流
- public void write(char[]cbuf,int off,int len) 将字符数组按指定的格式输出(off表示索引,len表示写入的字符数)到流中
- public void flush() 将缓冲区中的数据写到文件中
- public void close() 关闭输出流
使用FileReader类读取文件
文件字符输入流类 FileReader 是继承自 InputStreamReader 类,而 InputStreamReader 类又继承自Reader类,因此Reader类与 InputStream Reader类所提供的方法均可供 FileReader 类所创建的对象使用。在使用 FileReader 类读取文件时,必须先调用 FileReader ()构造方法创建 FileReader 类的对象,再利用它来调用read()方法。
FileReader 类的构造方法
- public FileReader (String name)根据文件名称创建一个可读取的输入流对象。
例题:利用FileReader类读取C:\java文件夹下的文本文件test.txt,其内容如下图
//filename:App10_5. java FileReader 类的使用
import java.io.*;
public class App10_5
{
public static void main(String[]args) throws IOException
{
char[]c=new char[500];//创建可容纳500个字符的数组。
try(FileReader fr=new FileReader("C:/java/test.txt");)
{
int num=fr.read(c);//将数据读入字符数组c内,并返回读取的字符数a
String str=new String(c,0,num);//将字符数组转换成字符串
System.out.println("读取的字符个数为:"+num+",其内容如下:");
System.out.println(str);
}
}
}
该程序运行结果为:
读取的字符个数为:29,其内容如下:
我喜欢Java!因为它功能强大
安全性好
可靠性高
使用FileWriter类写入文件
文件字符输出流类 FileWriter 继承自 OutputStreamWriter 类,而 OutputStreamWriter 类又继承自Writer类,因此Writer类与 OutputStreamWriter 类所提供的方法均可供 FileWriter 类所创建的对象使用。
FileWriter类的构造方法
- public FileWriter (String filename) 根据所给文件名创建一个可供写入字符数据的输出流对
- 象,原先的文件会被覆盖
- public FileWriter (String fillename,boolean a) 同上,但如果a设置为true,则会将数据追加在原先文件的后面
使用BufferedReader类读取文件
缓冲字符输入流类 BufferedReader 继承自Reader类, BufferedReader 类是用来读取缓冲区里的数据。使用 BufferedReader 类来读取缓冲区中的数据之前,必须先创建 FileReader 类对象,再以该对象为参数来创建 BufferedReader 类的对象,然后才可以利用此对象调用相应的方法来读取缓冲区中的数据。
Buffered Reader类的构造方法
- public BufferedReader (Reader in) 创建缓冲区字符输入流
- public BufferedReader (Reader in,int size) 创建缓冲区字符输入流,并设置缓冲区大小
Buffered Reader类的常用方法
- public int read() 读取单一字符
- public int read(char[]cbuf) 从流中读取字符并写入到字符数组cbuf中
- public int read(char[]cbuf,int off,int len) 从流中读取字符存放到字符数组ebuf中(off表示数组下)标,len表示读取的字符数) 跳过n个字符不读取
- public long skip(long n) 读取一行字符串
- public String read Line() 关闭流
使用BufferedWriter类写入文件
缓冲字符输出流类 BufferedWriter 继承自Writer类, BufferedWriter 类是用来将数据写入到缓冲区中。使用 BufferedWriter 类将数据写入缓冲区的过程与使用 BufferedReader 类从缓冲区中读出数据的过程相似。
BufferedWriter 类的构造方法
- public BufferedWriter (Writer out) 创建缓冲区字符输出流
- public BufferedWriter (Writer out,int size) 创建缓冲区字符输出流,并设置缓冲区大小
BufferedWriter 类的常用方法
- public void write(int e) 将单一字符写人缓冲区中
- public void write(char[]cbuf,int off,int len) 将字符数组cbuf按指定的格式写入到输出缓冲区中(off表示数组下标,len表示写入的字符数)
- public void write(String str,int off,int len) 写入字符串(off表示下标,len表示写入的字符数)
- public void newLine() 写人回车换行字符
- public void flush() 将缓冲区中的数据写到文件中
- public void close() 关闭流