流之阅读器和书写器(书写器)

Writer类从不直接使用,因为它是一个抽象类(有两个protected的构造函数)。它会通过它的某个子类以多态方式使用。它有5个write()方法,另外还有flush()close()方法:

protected Writer()                                               //构造函数
protected Writer(Object lock)                                    //构造函数
public abstract void write(char[] text,int offset,int length) throws IOException
public void write(int c) throws IOException
public void write(char[] text) throws IOException
public void write(String s) throws IOException
public void write(String s,int offset,int length) throws IOException
public abstract void flush() throws IOException
public abstract void close() throws IOException

write(char[] text, int offset, int length) 方法是基础方法,其他四个write()都是根据它实现的。子类至少要覆盖这个方法以及flush()和close()方法,但是为了提供更高效的实现方法,大多数子类还覆盖了其他一些write()方法。注:不同的编码方式可能写入不同的字节序列。具体输出取决于编码方式,Writer类的子类都有指定字符集的构造函数

书写器可以缓冲,有可能直接串链到 BufferedWriter,也有可能间接链入(因为其底层输出流是缓冲的)。为了强制将一个写入提交给输出介质,要调用 flush() 方法:

w.flush()

close()方法的行为与OutputStream的close()方法类似。close()刷新输出书写器,然后关闭底层输出流,并释放与之关联的所有资源:

public abstract void close() throws IOException

另外,在书写器关闭后,进一步的写入会抛出IOException异常。

我们来看一个书写器的例子:

package test;

import java.io.IOException;
import java.io.OutputStreamWriter;

public class ReadFile4 {
    public static void main(String[] args) {
        //注意这里指定了字符集的
        try (OutputStreamWriter w = new OutputStreamWriter(System.out, "UTF-8")){    
            String s1 = "日本人:ぅぅぉにみののめひすひゎほとて";
            w.write(s1);
            w.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
时间: 2024-10-10 02:10:18

流之阅读器和书写器(书写器)的相关文章

搭建rtmp直播流服务之4:videoJS/ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)

前面几章讲解了使用nginx-rtmp搭建直播流媒体服务器,以及使用ffmpeg推流到nginx-rtmp服务器,java通过命令行调用ffmpeg实现推流服务,后端的事情到这里就已经全部完成了. 本章讲一下播放器的选用和二次开发,前端的播放器虽然有flex(flash)可以用,但是很遗憾flex接触的并不多,学习成本又太高,那么基于第三方开源的flash播放器二次开发就显得很有必要. 一.几种播放器选择 那么播放器,哪些已经不再更新的和收费的,这里不会介绍,只介绍两种轻量级的开源播放器. 1.

CXF拦截器介绍及自定义拦截器实现

CXF拦截器是功能的主要实现单元,也是主要的扩展点,可以在不对核心模块进行修改的情况下,动态添加功能.当服务被调用时,会经过多个拦截器链(Interceptor Chain)处理,拦截器链在服务输入(IN)或输出(OUT)阶段实现附加功能,拦截器可以在客户端加入,也可以在服务端加入. 拦截器链的阶段: 拦截器链有多个阶段,每个阶段都有多个拦截器.拦截器在拦截器链的哪个阶段起作用,可以在拦截器的构造函数中声明. 输入拦截器链有如下几个阶段,这些阶段按照在拦截器链中的先后顺序排列. 阶段名称 阶段功

JVM类加载器原理与自定义类加载器

类加载器原理 JVM将class文件字节码文件加载到内存中, 并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class 对象,作为方法区类数据的访问入口. 类缓存 标准的Java SE类加载器可以按要求查找类,但一旦某个类被加载到类加载器中,它将维持加载(缓存)一段时间.不过,JVM垃圾收集器可以回收这些Class过象. 类加载器数状结构 引导类加载器(bootstrap class loader) 它用来加载Java的核心库(JAVA_HOME/

html 音乐 QQ播放器 外链 代码 播放器 外链 代码

韩梦飞沙  韩亚飞  [email protected]  yue31313  han_meng_fei_sha QQ播放器 外链 代码 播放器 外链 代码 ======== 歌曲链接 QQ播放器 外链 代码 播放器 外链 代码 <EMBED src="音乐url" autostart="true" loop="true" width="80" height="20"> 在网易云音乐, 搜索一首

流之阅读器和书写器(简介)

Java的内置字符集是Unicode的UTF-16编码.Java提供了一组API来读/写字符.注意这里是字符而不是字节.java.io.Reader类指定读取字符的API.java.io.Writer指定写字符的API.字节流与字符流相互转换的地方,就会使用到阅读器和书写器.Reader和Writer的具体子类允许读取特定的源和写入特定的目标.另外,过滤器阅读器和书写器可以附加到其他阅读器或书写器上,以提供额外的服务或接口. Reader和Writer最重要的具体子类是 InputStreamR

流之阅读器和书写器(过滤器阅读器和过滤器书写器)

InputStreamReader和OutputStreamWriter类就是相当于输入和输出流之上的装饰器,把面向字节的接口改为面向字符的接口.完成之后,就可以在它们之上使用面向字符的过滤器阅读器或过滤器书写器.与过滤器流一样,有很多子类可以完成特定的过滤工作,包括: BufferedReader BufferedWriter LineNumberReader PushbackReader PrintWriter BufferedReader和BufferedWriter类是基于字符的,对应于

对象初始化器与集合初初始化器

对象初始化器的结果: 对象初始化器的优点: 1.只需要一条语句就可以完成对象初始化工作. 2.无需为简单对象提供构造函数. 3.无需为初始化不同属性而为类提供多个构造函数. 集合初始化的优点: 1.集合初始化已声明的方式初始化集合,具有更好的代码可读性.

调试器开发实例_调试器框架设计

作为一个安全开发人员离不开调试器,它可以动态显示程序的执行过程,对于解决程序问题有极大的帮助,这些文章记录了我开发一个调试器雏形的过程,希望对你有帮助.或许我写的代码很拙劣,还请大家多多见谅! 我们使用  Microsoft Visual Studio 6.0 VC编译器来作为我们的开发工具想对一个程序进行调试,首先要做的当然是启动这个程序,这要使用CreateProcess这个Windows API来完成.例如: 1 // LilisiDebug.cpp : Defines the entry

调试器开发实例_调试器事件处理(一.事件到达)

上一章既然说到了调试循环事件,那么接下来我们该说说对调试器事件的处理了. 调试器的事件处理虽然有很多,但是并不是每一个都用得上的,接下来的文章中我们挑选一些经常用到的来给大家说说. CREATE_PROCESS_DEBUG_EVENT  创建进程之后的第一个调试事件,CREATE_PROCESS_DEBUG_INFO结构体描述了该类调试事件的详细信息. 该结构体有三个字段是句柄,分别是hFile,hProcess和hThread,同样要记得使用CloseHandle关闭它们! EXIT_PROC

java类加载器学习2——自定义类加载器和父类委托机制带来的问题

一.自定义类加载器的一般步骤 Java的类加载器自从JDK1.2开始便引入了一条机制叫做父类委托机制.一个类需要被加载的时候,JVM先会调用他的父类加载器进行加载,父类调用父类的父类,一直到顶级类加载器.如果父类加载器加载不了,依次再使用其子类进行加载.当然这类所说的父类加载器,不一定他们之间是继承的关系,有可能仅仅是包装的关系. Java之所以出现这条机制,因为是处于安全性考虑.害怕用户自己定义class文件然后自己写一个类加载器来加载原本应该是JVM自己加载的类.这样会是JVM虚拟机混乱或者