JAVA输入输出(IO)之字符流
来源:互联网 发布:js object 获取属性 编辑:程序博客网 时间:2024/05/02 02:48
上一篇《JAVA输入输出(IO)之字节流》介绍了JAVA字节输入输出流的一些用法,字节流一般是用于读写二进制数据的,当我们要读些字符数据的时候,如文本文件,就显得有些麻烦。所以JAVA还提供了专门用于读写字符数据的字符流。
字符输入流
java.io.Reader用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。
方法摘要
同样的,我们还是以操作文件为例,java.io.FileReader是用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在FileInputStream 上构造一个 InputStreamReader。
import java.io.FileReader;import java.io.IOException;public class FileReadWrite{ public static void main(String[] args) { FileReader reader = null; try { // 选用指定文件路径的构造方法 reader = new FileReader("test.txt"); int data = -1; // 从此输入流中读取一个数据字节,如果已到达文件末尾,则返回 -1 while ((data = reader.read()) != -1) { // 准备的文件为文本文件,且内容为阿拉伯数字,所以直接强制转换为字符输出 System.out.print((char) data); } } catch (IOException e) { // 异常处理 e.printStackTrace(); } finally { try { if (reader != null) { // 关闭输入流 reader.close(); } } catch (IOException e) { } } }}
这是直接使用FileReader的效果,我们可以看到和字节输入流基本一样,一般我们很少这样写,而是使用字符缓冲流java.io.BufferedReader。从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class FileReadWrite{ public static void main(String[] args) { BufferedReader reader = null; try { // 选用指定文件路径的构造方法 reader = new BufferedReader(new FileReader("test.txt")); String line = null; // 从此输入流中读取一行 while ((line = reader.readLine()) != null) { System.out.print(line); } } catch (IOException e) { // 异常处理 e.printStackTrace(); } finally { try { if (reader != null) { // 关闭输入流 reader.close(); } } catch (IOException e) { } } }}
使用缓冲流,我们可以直接读取一行。
字符输出流
写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。
方法概要
与FileReader对应的也有一个java.io.FilterWriter,用于写入已过滤的字符流的抽象类。抽象类 FilterWriter 自身提供了一些将所有请求传递给所包含的流的默认方法。FilterWriter 的子类应重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。
import java.io.FileWriter;import java.io.IOException;public class FileReadWrite{ public static void main(String[] args) { FileWriter writer = null; try { // 选用指定文件路径的构造方法 writer = new FileWriter("test.txt"); writer.write("hello"); writer.flush(); } catch (IOException e) { // 异常处理 e.printStackTrace(); } finally { try { if (writer != null) { // 关闭输入流 writer.close(); } } catch (IOException e) { } } }}
上面的例子中使用的是FilterWriter向文件中写入数据,各位也可以试一下缓冲输出流java.io.BufferedWriter
完成这个操作。
- JAVA输入输出(IO)之字符流
- Java-IO之字符输入输出流(Reader和Writer)
- 第二十一篇:JAVA输入输出(IO)之字符流
- java IO(输入输出) 字符流
- java基础6:io流对象之字符输入输出流
- java IO总结之字符流操作控制台输入输出(高效)
- IO(输入输出)-字符流
- JAVA输入输出(IO)之字节流
- JAVA输入输出(IO)之常用流
- Java IO之输入输出流
- Java基础-IO-字符输入输出流(笔记)
- 字符输入输出流:java.io.FileReader和java.io.FileWriter
- JAVA输入输出流(IO)
- 黑马程序员学习笔记JAVA高级视频 IO输入输出字符流之Writer类
- 第二十篇:JAVA输入输出(IO)之字节流
- 第二十二篇:JAVA输入输出(IO)之常用流
- java之io类,输入输出流学习
- java IO之文件输入输出流
- FastJson 泛型转换踩坑
- 我读了struts文档
- jQuery与Servlet实现文件上传与获取上传进度
- Python-Windows下安装BeautifulSoup和requests第三方模块
- 6大页面数据抓取工具
- JAVA输入输出(IO)之字符流
- 快速乘取模
- 英语视频
- 2416测试程序
- 开始写博客了!
- BUG严重级别定义及描述
- GIT 学习圣经
- 基础知识--数组、栈、队列的静态、动态和链式实现
- Linux 下软件安装