字符流InputStreamReader和OutputStreamWriter是Writer和Read的子类;是字节流通向字符流的桥梁,也就是可以把字节流转化为字符流。

InputStreamReader 构造方法:

  1. InputStreamReader(Inputstream  in)      

    创建一个使用默认字符集的 InputStreamReader。

  2. InputStreamReader(Inputstream  in,Charset cs) 

    创建使用给定字符集的 InputStreamReader。

  3.  InputStreamReader(InputStream in, CharsetDecoder dec) 

    创建使用给定字符集解码器的 InputStreamReader。

  4. InputStreamReader(InputStream in, String charsetName)  

    创建使用指定字符集的 InputStreamReader。

例如:

FileInputStream s;//文件字节流;
try {
s = new FileInputStream(path);//根据路径创建一个对象
InputStreamReader is=new InputStreamReader(s);//根据文件流创建字符流对象;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

OutputStreamWriter的构造方法

  1. OutputStreamWriter(OutputStream out)

    创建使用默认字符编码的 OutputStreamWriter

  2. OutputStreamWriter(OutputStream out, String charsetName)

    创建使用指定字符集的 OutputStreamWriter。

  3. OutputStreamWriter(OutputStream out, Charset cs)

    创建使用给定字符集的 OutputStreamWriter。

  4. OutputStreamWriter(OutputStream out, CharsetEncoder enc)

    创建使用给定字符集编码器的 OutputStreamWriter。

例如:

            InputStreamReader isr;
try {
isr = new InputStreamReader(client.getInputStream());
//client为Server对象;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

无论是InputStreamReader,还是OutputStreamWriter,我们都需要通过在实例化对象的时候我们给定一个(Inputstream或是Outputstream对象,这个过程也就是把字节流转化为字符流;

而我们之所以要用到字符流,是因为用字符流处理中文比较方便;字节流处理8位数据,而字符流则是用于处理16位数据;但是每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。也就是要实现一次从字节流转化为字符流的过程;

在实际使用中,为了提高效率,我们一般用,BufferedReader和BufferedWrite来处理:

BufferedReader:缓冲字符流:

BufferedReader处理字符流是比较方便的,它可以处理一行数据;直接从文件中读取一行字符串;

BufferedReader一共有两个构造方法:

一、创建一个使用默认大小输入缓冲区的缓冲字符输入流。

BufferedReader o=new BufferedReader(reader);

传入一个Read类(用于读取字符流的抽象类)的对象;

二、创建一个使用指定大小输入缓冲区的缓冲字符输入流。

BufferedReader i=new BufferedReader(reader, sz);

传入一个Read类(用于读取字符流的抽象类)的对象;并且传入一个int型,指定输入缓冲区的大小 ,,没有指定的话是使用默认的大小。大多数情况下,默认值就足够大了。

BufferedReader

我们用第一个实例化的参数来创建一个BufferedReader类的对象:

 BufferedReader in=
new BufferedReader(new InputStreamReader(System.in));

在JAVA的Server和ServerSocket中我们也用到了BuffererReader的readLine()方法来读取一个行数据:

               InputStreamReader isr;
try {
isr = new InputStreamReader(client.getInputStream());
BufferedReader buf = new BufferedReader(isr);
while (isStop) {
String str = buf.readLine(); //读取一行
// 如果对到的数据为NUll,则跳出循环
if (str == null)
break;
System.out.println(str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

BufferedWriter

构造方法:

BufferedWriter(Writer out)

创建一个使用默认大小输出缓冲区的缓冲字符输出流。

BufferedWriter(Writer out, int sz)

创建一个使用给定大小输出缓冲区的新缓冲字符输出流。

实例:

		OutputStreamWriter osw;
try {
osw = new OutputStreamWriter(client.getOutputStream());
BufferedWriter bufw = new BufferedWriter(osw);
bufw.write("欢迎连接服务器");
bufw.flush();// 冲洗刷新;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

注意的是,OutputStreamWriter需要调用flush()方法进行刷新缓冲流,在关闭的时候也要调用该方法。

JAVA之IO流(字符流)的更多相关文章

  1. Java IO: 其他字符流(下)

    作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackReader,LineNumberReader,St ...

  2. Java IO流字符流简介及基本使用

    Java IO流字符流简介及常用字符流的基本使用 字符流分为输入字符流(Writer)和输出字符流(Reader),这两种字符流及其子类字符流都有自己专门的功能.在编码中我们常用的输出字符流有File ...

  3. Java——IO类 字符流概述

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  4. 【Java基础】【21IO(字符流)&字符流其他内容&递归】

    21.01_IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写 ...

  5. Java IO---字节流和字符流

    一.IO流简介 流 流是一个抽象概念,Java程序和外部设备(可以是硬盘上的文件,也可以是网络设备)之间的输入输出操作是基于流的. 流就好比水管中的水流,具有流入和流出,类比数据的输入和输出. Jav ...

  6. IO之字符流

    什么是字符流 对于文本文件(.txt .java .c .cpp) 使用字符流处理 注意点 读入的文件一定要存在 否则就会报FileNotFoundException 异常的处理 为了保证流资源 一定 ...

  7. java中字节流与字符流以及字节流多余字节问题

    1.字节流 字节流byte为单位对文件的数据进行写入与读取操作.字节的方式在复制音频图片文件时比较适用,但在对于普通文件的读写上有两大缺陷: 第一,字节流在读取中文字符时,若设定的字节数组长度刚好末尾 ...

  8. JavaSE18-字节缓冲流&字符流

    1.字节缓冲流 1.1 字节缓冲流构造方法 字节缓冲流介绍 BufferOutputStream:该类实现缓冲输出流. 通过设置这样的输出流,应用程序可以向底层输出流写 入字节,而不必为写入的每个字节 ...

  9. java-IO流-字符流-FileReader、FileWriter、自定义小数组的拷贝、BufferedReader、BufferedWriter、readLine()和newLine()方法、LineNumberReader、使用指定的码表读写字符

    ###21.01_IO流(字符流FileReader) * 1.字符流是什么     * 字符流是可以直接读写字符的IO流     * 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要 ...

  10. Java IO之字符流和文件

    前面的博文介绍了字节流,那字符流又是什么流?从字面意思上看,字节流是面向字节的流,字符流是针对unicode编码的字符流,字符的单位一般比字节大,字节可以处理任何数据类型,通常在处理文本文件内容时,字 ...

随机推荐

  1. Spring MVC中的ModelMap作用及用法

    ModelMap的作用: ModelMap对象主要用于传递控制方法传递数据到结果页面.类似于request的setAttribute方法的作用. 所以我们要想在jsp页面获取数据,只要将数据放到Mod ...

  2. js Form.elements[i]的使用实例

    function pdf(){    //一个html里面可能存在多个form,所以document.form[0]指的是第一个form,document.form[1]返回就是第二个form,如果没 ...

  3. EF 添加方式比较

    using System; using System.Collections.Generic; using DBAccess.Models; using EntityFramework.BulkIns ...

  4. BFC布局

    这几天都没有写博客,自己的懒惰又要跑出来了,发觉不能再这样下去了,不然就什么都不想干了,然后将之前已经写得差不多的博客重新检视了一遍.这篇博客已经写得挺久的了,但是一直没有发布,现在补充了一些,也让自 ...

  5. js Function()构造函数

    var scope="global";    function constructFunction(){        var scope="local";   ...

  6. node.js+socket.io配置详解

    由于我是在win7的环境下,在这里就以win7系统为例进行讲解了. 首先需要在nodejs官网下载最新版的node.js,下载完毕直接安装即可,安装成功后在cmd命令行中执行node指令,如下结果就说 ...

  7. SQLSERVER常见系统函数之字符串函数(一)

    好久没有写博客了,这段时间准备写一下字符串函数 QQ群: 499092562:欢迎交流 字符串函数: 1.LEN(需要获取长度的字符串) 返回:字符串的长度 示例: SELECT LEN('小搬运工很 ...

  8. (十三)Maven插件解析运行机制

    这里给大家详细说一下Maven的运行机制,让大家不仅知其然,更知其所以然. 1.插件保存在哪里? 与我们所依赖的构件一样,插件也是基于坐标保存在我们的Maven仓库当中的.在用到插件的时候会先从本地仓 ...

  9. 小tips合集

    No. 1 同一个文本文件里的行结束符如果不一致,比如有些行结束符是0D0A-Windows风格的,而有些行又是UNIX风格的0A,在这种混杂情况下,VIM将非UNIX风格的显示为^M,但如果都是0D ...

  10. Spring 4 异常处理

    异常与HTTP状态码的映射(@ResponseStatus) Spring默认会将自身抛出的异常自动映射到合适的状态码,如下是一些示例: 举个例子,当后端抛出如下异常(TypeMismatchExce ...