北大青鸟佳音旗舰中心网站:ACCP校区(软件工程师)  BENET校区(网络工程师)  综合站 招聘网  
 
首 页  学校简介  学校新闻  课程详解  师资力量  招生问答  就业广场  网上报名  学习园地  就业明星  网上学院  人才测评  证书查询
免费课程咨询电话: 010-68345688 点击这里给我发消息 杨老师 点击这里给我发消息 李老师 点击这里给我发消息 齐老师 点击这里给我发消息 刘老师 点击这里给我发消息 张老师
 
你所在的位置:首页>> 首页- 学习园地-经典java教程(清华版)



经典java教程(清华版)

编辑:北大青鸟 发布时间:2006-11-22 17:26:45阅读:6640


 
4.7 字符流的处理

  java中提供了处理以16位的Unicode码表示的字符流的类,即以Reader和Writer 为基类派生出的一系列类。

4
.7.1 Reader和Writer
  这两个类是抽象类,只是提供了一系列用于字符流处理的接口,不能生成这两个类的实例,只能通过使用由它们派生出来的子类对象来处理字符流。

 1.Reader类是处理所有字符流输入类的父类。

  ◇ 读取字符
  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 abstract void close() throws IOException;

 2. Writer类是处理所有字符流输出类的父类。

  ◇ 向输出流写入字符
  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;
4.7.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是编码方式

  InputStreamReader和OutputStreamWriter的方法:

  ◇ 读入和写出字符
  基本同Reader和Writer。

  ◇ 获取当前编码方式
  public String getEncoding();

  ◇ 关闭流
  public void close() throws IOException;
4.7.3 BufferedReader和BufferedWriter
 ◇ 生成流对象

  public BufferedReader(Reader in); //使用缺省的缓冲区大小
  public BufferedReader(Reader in, int sz); //sz为缓冲区的大小
  public BufferedWriter(Writer out);
  public BufferedWriter(Writer out, int sz);

 ◇ 读入/写出字符

  除了Reader和Writer中提供的基本的读写方法外,增加对整行字符的处理。
  public String readLine() throws IOException; //读一行字符
  public void newLine() throws IOException; //写一行字符

【例4-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*=2;
      System.out.println("Input value changed after doubled: "+i);
    }catch(IOException e)
    {System.out.println(e);}
   }
  }

    查看运行结果

  注意:在读取字符流时,如果不是来自于本地的,比如说来自于网络上某处的与本地编码方式不同的机器,那么我们在构造输入流时就不能简单地使用本地缺省的编码方式,否则读出的字符就不正确;为了正确地读出异种机上的字符,我们应该使用下述方式构造输入流对象:
  
    ir = new InputStreamReader(is, "8859_1");

    采用ISO 8859_1编码方式,这是一种映射到ASCII码的编码方式,可以在不同平台之间正确转换字符。

打印本页 回顶部 返回前一页
上一篇: Java初学者都必须理解的七大问题
下一篇: S255班级学员香山游


热烈庆贺我中心蝉联2008年度十大杰出中心奖
热烈庆贺我中心蝉联2
BS1104班香山游
BS1104班香山游
BS258班模拟面试
BS258班模拟面试
BS1103班香山游
BS1103班香山游
 图片新闻


 开班报名截止时间
班 次
时间
状 态
报 名
10月13日  BS1102  脱产班 已 满
10月17日  BS1100  就业班 已 满
10月25日  BS1103  就业班 已 满
11月27日  BS1104  脱产班 已 满
12月10日  BS1105  脱产班 已 满
12月28日  BS1106  脱产班 已 满
1月 7日  BS1107  脱产班 余 6座

 免费IT讲座报名
BENET网络工程师讲座
时间:本周六、日下午 1:30
地点:北大青鸟网络校区
讲座内容:
木马程序系列
VIP课程:VIP会员在周六早上9点半到11点,持VIP会员卡到网络校区参加VIP课程
课程内容:商务办公
主讲:北大青鸟金牌讲师
咨询:010-68341988
订座:010-68345688
点击进入网上订座>>
 免费IT专家讲座报名
姓名
*
性别
年龄
学历
联系地址
联系电话 *
QQ
我是从 知道我们网站的
留言
  
 相关新闻

· S254—S261篮球对抗赛
· S255班级学员香山游
· 经典java教程(清华版)
· Java初学者都必须理解的七大问题
· 连接SQLserver数据库注意
· Java琐碎笔记
· GRUB安装,配置及使用汇总
· 校园网实现(VLAN及策略路由的实现.
· Oracle联机恢复手记
· Loopback口的作用汇总
· C#中StringBuilder类的.
· Java编码规范
· 网络工程师专业术语大集合之路由器 (.
· 提高Linux系统安全性十种招数(B.
· Linux中文件查找技术大全(BEN.
 热门文章

· 经典java教程(清华版)
· 华为交换机经典配置
· Java初学者都必须理解的七大问题
· C#中StringBuilder类的.
· JAVA软件工程师就业前景
· CONFIG.SYS文件的命令与配置
· 连接SQLserver数据库注意
· 学习感想---我在学习编程中遇到的困.
· 网络工程师专业术语大集合之路由器 (.
· Java琐碎笔记
· S165开学典礼
· Oracle联机恢复手记
· S218学员结业典礼
· 2007年网站招聘IT类职位需求量最大
· Java编码规范

   北大青鸟就业名企 更多 >>
招聘信息 | 联系我们 | 中心地图 | 在线报名 | 招生问答 | 在线留言
版权所有 © 北大青鸟 Copyright edujy.com All Rights Reserved
北大青鸟APTECH( 北京佳音旗舰 ) 授权培训中心 京ICP备06064588号
地址:北京西城区车公庄大街丙3号(彩印大厦四五层,官园批发市场正对面)
全国统一报名电话:010-68341988 010-68345688 邮编:100044