Java中的流(3)字符流-Reader和Writer
java中提供了处理以16位的Unicode码表示的字符流的类,即以Reader和Writer 为基类派生出的一系列类。
1.Reader和Writer
这两个类是抽象类,只是提供了一系列用于字符流处理的接口,不能生成这两个类的实例,只能通过使用由它们派生出来的子类对象来处理字符流。
| public int read() throws IOException | 读取一个字符,返回值为读取的字符 |
| public int read(char cbuf[]) throws IOException | 读取一系列字符到数组cbuf[]中,返回值为实际读取的字符的数量 |
| public abstract int read(char cbuf[],int off,int len) throws IOException | 读取len个字符,从数组cbuf[]的下标off处开始存放,返回值为实际读取的字符数量,该方法必须由子类实现 |
| public boolean markSupported() | 判断当前流是否支持做标记 |
| public void mark(int readAheadLimit) throws IOException | 给当前流作标记,最多支持readAheadLimit个字符的回溯 |
| public void reset() throws IOException | 将当前流重置到做标记处 |
| public void write(int c) throws IOException | 将整型值c的低16位写入输出流 |
| public void write(char cbuf[]) throws IOException | 将字符数组cbuf[]写入输出流 |
| public abstract void write(char cbuf[],int off,int len) throws IOException | 将字符数组cbuf[]中的从索引为off的位置处开始的len个字符写入输出流 |
| public void write(String str) throws IOException | 将字符串str中的字符写入输出流 |
| public void write(String str,int off,int len) throws IOException | 将字符串str 中从索引off开始处的len个字符写入输出流 |
| flush( ) | 刷空输出流,并输出所有被缓存的字节 |
| public abstract void close() throws IOException; | 关闭流 |


2. InputStreamReader和OutputStreamWriter
| public InputStreamReader(InputStream in) | in是字节流,而InputStreamReader是字符流,但是其来源是字节流in, 因此InputStreamReader就可以把字节流in转换成字符流处理。 |
| public InputStreamReader(InputStream in,String enc) throws UnsupportedEncodingException | enc是编码方式,就是从字节流到字符流进行转换时所采用的编码方式, 例如 ISO8859-1,UTF-8,UTF-16等等 |
| public OutputStreamWriter(OutputStream out) | out是字节流,而OutputStreamReader是字符流 |
| public OutputStreamWriter(OutputStream out,String enc) throws UnsupportedEncodingException | enc是编码方式 |
| public String getEncoding() | 获取当前编码方式 |
| 读入和写出字符 | 基本同Reader和Writer |
3. BufferedReader和BufferedWriter
| public BufferedReader(Reader in) | 使用缺省的缓冲区大小 |
| public BufferedReader(Reader in, int sz) | sz为缓冲区的大小 |
| public BufferedWriter(Writer out) | public BufferedWriter(Writer out, int sz) |
| public String readLine() throws IOException | 读一行字符 |
| public void newLine() throws IOException | 除了Reader和Writer中提供的基本的读写方法外,增加对整行字符的处理 |
| 读入/写出字符 | 基本同Reader和Writer |
4.示例
import java.io.*;
public class NumberInput {
public static void main(String args[]) {
try {
InputStreamReader ir;
BufferedReader in;
ir = new InputStreamReader(System.in);
// 从键盘接收了一个字符串的输入,并创建了一个字符输入流的对象
in = new BufferedReader(ir);
String s = in.readLine();
// 从输入流in中读入一行,并将读取的值赋值给字符串变量s
System.out.println("Input value is: " + s);
int i = Integer.parseInt(s);// 转换成int型
i *= ;
System.out.println("Input value changed after doubled: " + i);
} catch (IOException e) {
System.out.println(e);
}
}
}
运行结果
D:/>java NumberInput
123
Input value is 123
Input value changed after doubled: 246
注意:在读取字符流时,如果不是来自于本地的,比如说来自于网络上某处的与本地编码方式不同的机器,那么我们在构造输入流时就不能简单地使用本地缺省的编码方式,否则读出的字符就不正确;为了正确地读出异种机上的字符,我们应该使用下述方式构造输入流对象:
ir = new InputStreamReader(is, "8859_1");
采用ISO 8859_1编码方式,这是一种映射到ASCII码的编码方式,可以在不同平台之间正确转换字符。
Java中的流(3)字符流-Reader和Writer的更多相关文章
- JAVA中的字节流与字符流
字节流与字符流的区别? 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用 ...
- java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr
BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWri ...
- Java中的字节流,字符流,字节缓冲区,字符缓冲区复制文件
一:创建方式 1.建立输入(读)对象,并绑定数据源 2.建立输出(写)对象,并绑定目的地 3.将读到的内容遍历出来,然后在通过字符或者字节写入 4.资源访问过后关闭,先创建的后关闭,后创建的先关闭 ...
- Java中字节流如何转字符流,OutputStreamWriter用法
OutputStreamWriter 将字节流转换为字符流.是字节流通向字符流的桥梁.如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:UTF-8: 步骤: 1.创建流 子类对象 绑定数 ...
- Java:IO流之字符流Reader、Writer详解
java.io包中:字符流 字符流的两个抽象基类: Reader Writer 文件的读取:Reader抽象类(java.io包中) 直接子类的构造方法: FileRead ...
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...
- Java中IO流之字符流
我们有了字节流,为什么还需要字符流? 字符的底层是 字节 + 编码表 = 字符,字符是人能看懂的信息. 字符流在使用的时候,会以字节流为基础,把字节写入缓冲区,在缓冲区内根据编码类型(UTF-8,GB ...
- JAVA之IO流(字符流)
字符流InputStreamReader和OutputStreamWriter是Writer和Read的子类:是字节流通向字符流的桥梁,也就是可以把字节流转化为字符流. InputStreamRead ...
- java IO流 之 字符流
字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...
- JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习
JAVA之旅(二十四)--I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习 JAVA之旅林林总总也是写了二十多篇了,我们今天终于是接触到了I/O了 ...
随机推荐
- spring mvc 整理
spring mvc 整理
- hdu1042 (模拟n!)
题目大意: 求 n.(可能会超过整数范围,这里用数组模拟n!的值) pid=1042">http://acm.hdu.edu.cn/showproblem.php?pid=1042 A ...
- Office EXCEL 表格如何设置某个单元格是选择项,如何设置一级下拉菜单
1 比如我要在C这一列都做成下拉菜单,则我选中这一列的第一个单元格,然后点击数据-有效性,然后把允许改成"序列",在来源中输入每一项(用逗号隔开),比如我一共要做四个下拉菜单选项, ...
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的使用方法总结
具体解读Jquery各Ajax函数: $.get(),$.post(),$.ajax(),$.getJSON() 一 $.get(url,[data],[callback]) 说明:url为请求地 ...
- Deepin-安装和卸载软件
一般默认厂商源安装软件 安装软件: 示例:sudo apt-get install xx 实例:sudo apt-get install nodejs 卸载软件: 示例:sudo apt-get -- ...
- 使用 maskView 设计动画
1.maskView(maskLayer) 基本原理 :可类比于多张png图片叠加遮罩 2.maskView配合CAGradientLayer,alpha通道图片的使用.maskView是iOS8以上 ...
- Selenium系列之--测试框架断言【转】
selenium提供了三种模式的断言:assert .verify.waitfor 1)Assert(断言) 失败时,该测试将终止. 2)Verify(验证) 失败时,该测试将继续执行,并将错误记入日 ...
- 如何用css给博客换一个好看的样式
第一步:点击设置,将如下代码复制到页面定制css代码 h3 { color: #fff; background-color: #008eb7; -moz-border-radius: 3px; bor ...
- 【iOS系列】-xib封装使用
[iOS系列]-xib封装使用 Xib文件可以用来描述某一块局部的UI界面 Xib文件的加载 修改xib文件的大小size(Freeform) 第一: NSArray *objs = [[NSBund ...
- setTimeout不可靠的修正办法及clearTimeout
javascript里的这两个定时器函数,大家一定耳熟能详: setTimeout("函数()",毫秒)就是开启一个计时器,指定毫秒后执行该函数一次. 有关定时器,javascri ...