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了 ...
随机推荐
- soapUI系列之—-03 Groovy脚本常用方法2
------Groovy脚本常用方法 1.解析Json数据脚本 //groovy读取json的方式很简单,re.body.businessinfo.c2rate读取c2rate对应的值 import ...
- 如何更有效的消灭watchdogs挖矿病毒?华为云DCS Redis为您支招
漏洞概述 近日,互联网出现watchdogs挖矿病毒,攻击者可以利用Redis未授权访问漏洞入侵服务器,通过内外网扫描感染更多机器.被感染的主机出现 crontab 任务异常.系统文件被删除.CPU ...
- GCC编译动态和静态链接库例子
我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为静态库和动态库两种.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不会被连接到目标代码中,而是 ...
- python 【第三篇】函数基础
深浅拷贝 set是一个无序且不重复的元素集合访问速度快天生解决重复问题 #!/usr/bin/env python3 # -*- coding:utf-8 -*- #深浅拷贝 import copy ...
- 我的Android进阶之旅------>Android编译错误java.util.zip.ZipException: duplicate entry的解决方法
今天在Android Studio中把另外一个项目引入当前项目,编译的时候出现了java.util.zip.ZipException: duplicate entry错误. 错误例如以下所看到的: F ...
- 2016/3/24 ①数据库与php连接 三种输出fetch_row()、fetch_all()、fetch_assoc() ②增删改时判断(布尔型) ③表与表之间的联动 ④下拉菜单 ⑤登陆 三个页面
①数据库与php连接 图表 header("content-type:text/html;charset=utf-8"); //第一种方式: //1,生成连接,连接到数据库上的 ...
- 可以声明接口,但不可以new接口
接口是一种特殊的抽象类,它包含常量和方法的声明,但没有方法的实现:可以把接口看成是一种特殊的抽象类: 接口实质上是一种规范,它关心的是"做什么",不关心"怎样做" ...
- php判断手机号码
//PHP判断手机号码 public function isMobile($params) { $pattern = "/^(13[0-9]|14[0-9]|15[0-9]|17[0-9 ...
- 以太坊 EVM内交易执行分析(二)
接着上次的分析,分析一下run方法是如何执行智能合约的.至于以太币的交易,在上一篇中,已经由分析的那两个函数完成了: 合约的运行是从run开始的,go-ethereum/core/vm/evm.go ...
- android NDK 使用(多个)静态库生成动态库
android NDK 使用(多个)静态库生成动态库. 1.编写Android.mk文件:如下两种方式都可以,用于NDK编译工具生成的两个.a文件来生成最终的libtwolib-second.so动态 ...