12.3.2 文件字符流
FileReader类是InputStreamReader类的直接子类,而InputStreamReader类是Reader类的直接子类。FileReader用于从文件中读取字符数据。该类只能按照本地平台默认的字符编码规范读取数据(字符),用户不能指定其他字符编码类型。
FileReader类构造方法的参数是磁盘文件,确定了数据源。其构造方法有:
①FileReader(String fileName)throws FileNotFoundException;
②FileReader(File file)throws FileNotFoundException。
FileReader类中可用的方法有:read()返回输入字符,read(char[]buffer)输入字符到字符数组中等。这些方法是从Reader类间接继承下来的,因此,其用法与Reader类中相应的读方法相同。详见12.2.2节中字符流中的方法声明。
FileWriter类是OutStreamWriter类的直接子类,OutStreamWriter类是Writer类的直接子类。FileWriter用于向文件中写字符。该类只能按照本地平台默认的字符编码规范写数据(字符),用户不能指定其他字符编码类型。
FileWriter类构造方法的参数是磁盘文件,确定了数据目的地。其构造方法包括:
①FileWriter(String fileName)throws IOException;
②FileWriter(String fileName,boolean append)throws IOException;
③FileWriter(File file)throws IOException。
FileWriter类中常用的方法有:write(String str)和Write(char[]buffer)输出字符串,write(int char)输出字符,flush()输出缓冲字符,close()在执行flush后关闭输出流,getEncoding()获得文件流字符的编码等。这些写方法是从Writer类间接继承下来的,因此,其用法与Writer类中相应的写方法相同。详见12.2.2节中字符流中的方法声明。
【例12-7】 编程将唐诗《登鹳雀楼》写入登鹳雀楼.txt文件中,然后再将该文件的内容读出,打印在显示器上。
程序运行结果:
白日依山尽
黄河入海流
欲穷千里目
分析与思考:①因为以字符为单位进行读写,所以,能正确地处理汉字。当调用write方法写出字符时,文件字符输出流(FileWriter)会按照平台默认的字符编码规范将内存中的每个Unicode字符转换成一个或多个字节,并将这些字节写到文件中;当调用read方法读取字符时,文件字符输入流(FileReader)会按照平台默认的字符编码规范从文件中读取一个或多个字节,并将其转换成Unicode字符返回。
②Ex12_7类中使用的两种写方法:write(String str)和Write(char[]buffer)。
模仿例12-7:将另一首唐诗写入文件,然后再从该文件中读出并打印在显示器上。要求读文件时,使用read(char[]buffer)方法。
改写例12-5,使用FileReader类,编程完成例12-5的功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。