快速业务通道

彻底转变流,第1部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
进行编码的 OutputStreamWriter 进行写操作。

清单 20. 读取编码的字符数据

package org.merlin.io; import java.io.*; /** * An output engine that copies data from a Reader through * a OutputStreamWriter to the target OutputStream. * * @author Copyright (c) 2002 Merlin Hughes <merlin@merlin.org> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. */ public class ReaderWriterEngine implements OutputEngine {   private static final int DEFAULT_BUFFER_SIZE = 8192;   private Reader reader;   private String encoding;   private char[] buffer;   private Writer writer;

该类的构造器接受要从中读取的字符流、要使用的编码以及可选的缓冲区大 小。

清单 21. 构造器

public ReaderWriterEngine (Reader in, String encoding) {    this (in, encoding, DEFAULT_BUFFER_SIZE);   }   public ReaderWriterEngine     (Reader reader, String encoding, int bufferSize) {    this.reader = reader;    this.encoding = encoding;    buffer = new char[bufferSize];   }

彻底转变流,第1部分(12)

时间:2011-06-21 Merlin Hughes

当该引擎初始化时,它将以所选编码格式写字符的 OutputStreamWriter 连 接至提供的输出流。

清单 22. 初始化输出流写程序

public void initialize (OutputStream out) throws IOException {    if (writer != null) {     throw new IOException ("Already initialised");    } else {     writer = new OutputStreamWriter (out, encoding);    }   }

当执行该引擎时,它从输入字符流中读取数据,然后将它们写入 OutputStreamWriter ,接着 OutputStreamWriter 将它们以所选的编码格式传 递给相连的输出流。至此,该框架使数据可供读取。

清单 23. 读取数据

public void execute () throws IOException {    if (writer == null) {     throw new IOException ("Not yet initialised");    } else {     int amount = reader.read (buffer);     if (amount < 0) {      writer.close ();     } else {      writer.write (buffer, 0, amount);     }    }   }

当引擎执行完时,它关闭其输入。

清单 24. 关闭输入

public void finish () throws IOException {    reader.close ();   } }

在这种与压缩不同的情况中,Java I/O 包不提供对 OutputStreamWriter 之 下的字符编码类的低级别访问。因此,这是在 Java 平台 1.4 之前的发行版上 读取编码格式的字符流的唯一有效解决方案。从版本 1.4 开始, java.nio.charset 包确实提供了与流无关的字符编码和译码能力。然而,这个 包不能满足我们对基于输入流的解决方案的要求。

彻底转变流,第1部分(13)

时间:2011-06-21 Merlin Hughes

应用工程解决方案:读取序列化的 DOM 文档

最后,让我们研究该框架的最后一种用法。清单 25 到 29 中的代码提供了 一个用来读取序列化格式的 DOM 文档或文档子集的解决方案。这一代码的潜在 用途可能是对部分 DOM 文档执行确认性重新解析。

清单 25. 读取序列化的 DOM 文档

package org.merlin.io; import java.io.*; import java.util.*; import org.w3c.dom.*; import org.w3c.dom.traversal.*; /** * An output engine that serializes a D

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号