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. Mockito的简单使用方法演示样例

    Mockito是一个流行的Mocking框架.它使用起来简单,学习成本非常低.并且具有非常简洁的API,測试代码的可读性非常高.因此它十分受欢迎,用 户群越来越多.非常多的开源的软件也选择了Mocki ...

  2. Pacemaker 安装与使用

    Pacemaker 仅仅做资源管理器(CRM).底下的消息系统採用 corosync. 安装 以 ubuntu 为例, sudo aptitude install -y pacemaker coros ...

  3. Sql Server 导入还有一个数据库中的表数据

    在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,此处以SQL Server导入表数据为例.阐述一下: 1.打开SQL Server Management ...

  4. mac 通过 终端 ssh 远程连接 centos 服务器

    mac 通过 终端 ssh 远程连接 centos 服务器 在终端下输入 ssh -l root 204.74.*.*      就可以连接了,这是端口没变的情况,还是原来的22 ssh -p 448 ...

  5. 常用近百个js代码汇总

    //檢查空串 function isEmpty(str){ )) return (true); else return(false); } //檢查是否未數字 function isDigit(the ...

  6. Django项目开发-小技巧

    当你开发完一个Django项目之后肯定要吧他丢到服务器让跑起来,但是你在自己的环境下安装了好多的包,是不是在服务器中也要一个个的安装了, pip freeze > read.txt #这条命令会 ...

  7. 找不到方法 Void Newtonsoft.Json.JsonConvert.set_DefaultSettings

    找不到方法 Void Newtonsoft.Json.JsonConvert.set_DefaultSettings 因为 Newtonsoft.Json.dll 的版本号问题: C:\Program ...

  8. 让Linq的OrderBy支持动态字段

    使用linq的OrderBy,如果明确知道是哪个字段,当然很容易: IQueryable<User> userQuery = ...; userQuery.OrderBy(u => ...

  9. Lightoj 1005 Rooks(DP)

    A rook is a piece used in the game of chess which is played on a board of square grids. A rook can o ...

  10. servlet简单例子1

    servlet简单例子1 分类: servlet jsp xml2012-04-18 21:54 3646人阅读 评论(3) 收藏 举报 servletloginjspaction浏览器 LoginS ...