`
默默的小熊
  • 浏览: 233431 次
社区版块
存档分类
最新评论

Writer

 
阅读更多

public abstract class Writer implements Appendable, Closeable, Flushable {

	//临时的缓冲,用于存储单个字符或字符串
	private char[] writeBuffer;

	private final int writeBufferSize = 1024;

	//用于同步操作
	protected Object lock;

	protected Writer() {
		this.lock = this;
	}

	protected Writer(Object lock) {
		if (lock == null) {
			throw new NullPointerException();
		}
		this.lock = lock;
	}

	//写一个字符,int是32位的,把低的16位写进去,高的16位被忽略
	public void write(int c) throws IOException {
		synchronized (lock) {
			if (writeBuffer == null) {
				writeBuffer = new char[writeBufferSize];
			}
			writeBuffer[0] = (char) c;
			write(writeBuffer, 0, 1);
		}
	}
	
	//抽象方法
	abstract public void write(char cbuf[], int off, int len)
			throws IOException;

	public void write(char cbuf[]) throws IOException {
		write(cbuf, 0, cbuf.length);
	}

	public void write(String str) throws IOException {
		write(str, 0, str.length());
	}

	public void write(String str, int off, int len) throws IOException {
		synchronized (lock) {
			char cbuf[];
			if (len <= writeBufferSize) {
				if (writeBuffer == null) {
					writeBuffer = new char[writeBufferSize];
				}
				cbuf = writeBuffer;
			} else { // Don't permanently allocate very large buffers.
				cbuf = new char[len];
			}
			str.getChars(off, (off + len), cbuf, 0);
			write(cbuf, 0, len);
		}
	}

	public Writer append(CharSequence csq) throws IOException {
		if (csq == null)
			write("null");
		else
			write(csq.toString());
		return this;
	}
	
	public Writer append(CharSequence csq, int start, int end)
			throws IOException {
		CharSequence cs = (csq == null ? "null" : csq);
		write(cs.subSequence(start, end).toString());
		return this;
	}

	public Writer append(char c) throws IOException {
		write(c);
		return this;
	}

	abstract public void flush() throws IOException;

	abstract public void close() throws IOException;

}
 
分享到:
评论

相关推荐

    Wechat Miniprogram plugin for Hanzi Writer (微信小程序组件).zip

    Wechat Miniprogram plugin for Hanzi Writer (微信小程序组件)Hanzi Writer Wechat Miniprogram Plugin (微信小程序组件) 警告此小程序插件已不再维护,最新版本可以通过 安装npm install hanzi-writer-miniprogram...

    windows live writer 插件

    Windows Live Writer是一款由微软开发的离线博客编辑器,它允许用户在本地环境中撰写博客文章,然后同步到各种博客平台。这款软件以其直观的界面和丰富的功能深受博客作者喜爱。"Windows Live Writer 插件"是指针对...

    U盘刻录工具 Image Writer

    **U盘刻录工具 Image Writer** 是一款专为IT专业人士设计的小巧且高效的软件,用于创建USB启动盘。这款工具的出现旨在解决一个常见的问题,即在使用其他刻录工具制作Ubuntu Server启动盘时可能会遇到的无法正常使用...

    mpeg4 writer 写 MP4文件

    "mpeg4 writer"就是这样一个功能,它允许开发者通过编程方式创建和写入MP4文件。而FFmpeg则是一个强大的开源工具集,包含了多种处理音视频的库,其中包括了对MP4文件的支持。 FFmpeg项目包括多个组件,如...

    英文润色软件StyleWriter

    **StyleWriter:提升英文写作水平的专业工具** StyleWriter是一款专为改善和优化英文写作而设计的软件,尤其适合那些希望提升写作清晰度、准确性和影响力的用户。它通过深入分析文本,提供一系列建议来帮助用户改进...

    Emv Reader Writer v8.6_Writerv8.6_EMVv8.6_EMVReader/Writer_EMVWr

    EMV Reader Writer v8.6 是一款专门针对EMV(Europay, Mastercard, Visa)标准智能卡的读写工具。EMV是一种国际通用的银行卡技术,它为芯片卡提供安全交易环境,增强了防欺诈功能。这款软件适用于计算机,能够帮助...

    ImageWriter 启动盘烧写工具

    ImageWriter 是一款专为嵌入式系统设计的启动盘烧写工具,它的主要功能是将镜像文件(如ISO)写入USB驱动器,从而创建一个可引导的启动盘。这款工具以其轻量级和易用性而受到用户的欢迎,解压后即可直接运行,无需...

    dataxV202210的所有writer插件

    在这个“dataxV202210”的版本中,重点是其writer插件部分,这些插件负责将数据写入到各种不同的数据存储系统中。由于整个DataX框架的压缩包体积超过1GB,因此这里只提供了writer插件的单独压缩文件,方便用户根据...

    image writer for windows ,Windows下的写image软件

    标题中的“image writer for windows”指的是适用于Windows操作系统的镜像写入工具,它主要用于将镜像文件(如ISO、IMG等)烧录到USB驱动器或其他可移动存储设备上。这种软件在安装操作系统,尤其是像Chrome OS - ...

    datax数据迁移插件-db2writer

    《DataX数据迁移插件-DB2Writer深度解析》 DataX是阿里巴巴开源的一款强大而高效的数据同步工具,它能够实现在多种数据存储之间进行数据迁移。在大数据领域,数据迁移是一项至关重要的任务,尤其在企业级应用中,...

    XPS虚拟打印机 驱动(Microsoft XPS Document Writer)

    Microsoft XPS Document Writer 即:XPS虚拟打印机 软件开发打印测试的必备工具。 突然发现不能用了,缺少驱动什么的,删除了,没法再安装了。网上找了半天,得解,有人竟然要8分,做人要厚道,我只要1分。 适用...

    CutePDF Writer 提供方便的 PDF 印制功能,无论你正在看是网页或者各式文件,只要能以打印机打印出来的,CutePDF Writer 都能将它们「印成」PDF 格式,方便文件档案在各式计算机平台上阅览。

    CutePDF Writer是一款非常实用的PDF虚拟打印机软件,它能够帮助用户轻松地将任何可打印文档转换为PDF格式。在Windows操作系统中,我们通常通过选择“打印”选项,然后选择CutePDF Writer作为打印机,就能将文档转换...

    Spreadsheet_Excel_Writer 生成excel 实例

    "Spreadsheet_Excel_Writer" 是一个库,它允许程序员通过编程方式创建和修改Excel文件,而无需依赖Microsoft Excel软件本身。本实例将深入探讨如何使用Spreadsheet_Excel_Writer库生成Excel文件,帮助开发者更高效地...

    基于DCSoft.Writer编辑器的模板测试工具

    **基于DCSoft.Writer编辑器的模板测试工具** 在IT领域,开发用户友好的文本编辑工具是常见的需求之一。DCSoft.Writer编辑器是一款专为开发者设计的轻量级文本编辑组件,它提供了丰富的功能,便于创建和编辑文档。...

    json-writer.zip_C++_JSON_Json::Writer_jsonwriter_解析json

    C++作为一款强大的系统编程语言,虽然原生不支持JSON解析,但可以通过第三方库来实现,比如本主题中提到的`json::Writer`。这个压缩包文件“json-writer.zip”提供了一个C++实现的JSON解析器,它具有快速处理JSON...

    xmlwriter中文版

    这个“xmlwriter中文版”可能是针对中文环境优化的一个版本,或者包含中文文档和示例,方便中国用户使用。在本文中,我们将深入探讨XMLWriter的原理、使用方法以及在处理中文字符时的注意事项。 XML(Extensible ...

    硬改SN Writer最强硬改软件

    《硬改SN Writer:解锁硬件修改的强大力量》 在IT行业中,有时我们需要对硬件设备进行特定的修改,以适应特殊的需求或者提升其性能。硬改SN Writer就是这样一款强大的工具,专门用于对各种型号的硬件进行SN(Serial...

    Pattern_Writer_v7.rar

    《Pattern_Writer_v7》是一款专注于模式写作的软件工具,其主要目标是帮助用户高效地创建、管理和编辑各种模式化的文本。在IT行业中,模式写作通常指的是编写具有重复结构的文档,例如编程代码模板、报告模板或者...

    WhiteSmoke Writer 2011英文写作纠错软件

    《WhiteSmoke Writer 2011:英文写作的精准纠错利器》 WhiteSmoke Writer 2011是一款专为英文写作提供智能纠错服务的软件,它以强大的语法检测、拼写检查和风格改进功能,成为了广大英语学习者和专业作家的得力助手...

    xmlwriter有汉化补丁

    在描述中提到的“xmlwriter有汉化补丁”,意味着存在一种补丁或翻译包,使得原本可能只有英文界面的XMLwriter工具或其相关文档可以被中文用户更加友好地理解和使用。这对于中文使用者来说是一个很大的便利,因为它...

Global site tag (gtag.js) - Google Analytics