⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 writeroutputstream.java

📁 ZK 基础介绍 功能操作 模块 结合数据库操作
💻 JAVA
字号:
/* WriterOutputStream.java{{IS_NOTE	Purpose:			Description:			History:		Mon May  1 22:00:51     2006, Created by tomyeh}}IS_NOTECopyright (C) 2006 Potix Corporation. All Rights Reserved.{{IS_RIGHT	This program is distributed under GPL Version 2.0 in the hope that	it will be useful, but WITHOUT ANY WARRANTY.}}IS_RIGHT*/package org.zkoss.io;import java.io.Writer;import java.io.OutputStream;import java.io.IOException;/** * An output stream that is on top of a writer. * * @author tomyeh */public class WriterOutputStream extends OutputStream {	private final Writer _writer;	private final String _charset;	private final byte[] _bs; //used only with writer	private int _cnt, _type; //used only with writer	/** Constructs an out stream with the specified encoding.	 *	 * @param charset the charset. If null, "UTF-8" is assumed.	 */	public WriterOutputStream(Writer writer, String charset) {		if (writer == null) throw new IllegalArgumentException("null");		_writer = writer;		_bs = new byte[3];		_charset = charset == null ? "UTF-8": charset;	}	/** Constructs an output stream assuming UTF-8 encoding.	 */	public WriterOutputStream(Writer writer) {		this(writer, null);	}	public void write(byte[] b) throws IOException {		_writer.write(new String(b, _charset));	}	public void write(byte[] b, int off, int len) throws IOException {		_writer.write(new String(b, 0, b.length, _charset));	}	public void write(int b) throws IOException {		if (_type != 0) {			if (!"UTF-8".equals(_charset) || (b & 0xc0) == 0x80) {				_bs[_cnt ++] = (byte)b;				if (_cnt == _type) { //complete					_writer.write(new String(_bs, 0, _type, _charset));					_type = 0; //reset				}				return;			} else { //failed				for (int j = 0; j < _cnt; ++j)					_writer.write(_bs[j]);				_type = 0; //reset			}		} else {			if ("UTF-8".equals(_charset)) {				if ((b & 0xe0) == 0xc0 || (b & 0xf0) == 0xe0) {					_type = (b & 0xf0) == 0xe0 ? 3: 2;					_bs[0] = (byte)b;					_cnt = 1;					return;				}			} else {				//assume two-bytes per char if 0x80 -- might fail.				if ((b & 0x80) != 0) {					_type = 2;					_bs[0] = (byte)b;					_cnt = 1;					return;				}			}		}		_writer.write(b);	}	public void flush() throws IOException {		if (_type != 0) {			for (int j = 0; j < _cnt; ++j)				_writer.write(_bs[j]); //reset			_type = 0;		}		_writer.flush();		super.flush();	}	public void close() throws IOException {		flush();		_writer.close();		super.close();	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -