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的更多相关文章

  1. JAVA中的字节流与字符流

    字节流与字符流的区别? 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用 ...

  2. java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr

    BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWri ...

  3. Java中的字节流,字符流,字节缓冲区,字符缓冲区复制文件

     一:创建方式 1.建立输入(读)对象,并绑定数据源 2.建立输出(写)对象,并绑定目的地 3.将读到的内容遍历出来,然后在通过字符或者字节写入 4.资源访问过后关闭,先创建的后关闭,后创建的先关闭 ...

  4. Java中字节流如何转字符流,OutputStreamWriter用法

    OutputStreamWriter 将字节流转换为字符流.是字节流通向字符流的桥梁.如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:UTF-8: 步骤: 1.创建流 子类对象  绑定数 ...

  5. Java:IO流之字符流Reader、Writer详解

    java.io包中:字符流   字符流的两个抽象基类:   Reader         Writer   文件的读取:Reader抽象类(java.io包中) 直接子类的构造方法: FileRead ...

  6. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  7. Java中IO流之字符流

    我们有了字节流,为什么还需要字符流? 字符的底层是 字节 + 编码表 = 字符,字符是人能看懂的信息. 字符流在使用的时候,会以字节流为基础,把字节写入缓冲区,在缓冲区内根据编码类型(UTF-8,GB ...

  8. JAVA之IO流(字符流)

    字符流InputStreamReader和OutputStreamWriter是Writer和Read的子类:是字节流通向字符流的桥梁,也就是可以把字节流转化为字符流. InputStreamRead ...

  9. java IO流 之 字符流

    字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...

  10. JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习

    JAVA之旅(二十四)--I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习 JAVA之旅林林总总也是写了二十多篇了,我们今天终于是接触到了I/O了 ...

随机推荐

  1. java递归删除文件及目录

    package base; import java.io.File; public class delete {     public static void main(String[] args) ...

  2. 对于api安全性的思考

    目前的情况下api被很多地方应用,随之而来的是api的安全性问题. 我所认识到的安全性问题有以下几个方面: 1.DDoS(拒绝服务攻击),接口被恶意调用,使真实的用户无法享受到正常畅通的服务.     ...

  3. 2016/2/25 onchange 应用

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 构造json参数时key的引号和js string转json的三种方式

    {name:"dd",age:"16"} {"name":"dd","age":"16&q ...

  5. 实践001:char 类型字段在表中的长度

    Rainy on 20170215 1.同事在 写RFC的时候遇到报错:"YTST_001" 必须为扁平结构.不能将内部表.字符# 原因是自建结构中字段定义为了string 类型. ...

  6. java语法基础(二)

    流程控制语句 表达式语句 在表达式后面添加:就构成了表达式语句,简称“语句” 我们编写java代码,更多时候都是在书写表达式语句. int i;声明语句 i = 10;赋值语句 流程控制语句 流程控制 ...

  7. android编译openssl静态库.a

    github上有一个开源项目,已经为你编译openssl建好了工程. 地址:https://github.com/aluvalasuman/OpenSSL1.0.1cForAndroid 选择需要的版 ...

  8. 关于页面上输入框中 空格 、0 、NULL 的处理 示例

    ep.setPositionNum(get("positionNum").toString()); ep.setClasstype(get("classtype" ...

  9. ZOJ - 1610 Count the Colors(线段树区间更新,单点查询)

    1.给了每条线段的颜色,存在颜色覆盖,求表面上能够看到的颜色种类以及每种颜色的段数. 2.线段树区间更新,单点查询. 但是有点细节,比如: 输入: 2 0 1 1 2 3 1 输出: 1 2 这种情况 ...

  10. BZOJ3282:Tree(TCL基础题)

    给定N个点以及每个点的权值,要你处理接下来的M个操作. 操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和. 保证x到y是联通的. ...