码迷,mamicode.com
首页 > 其他好文 > 详细

简单使用输入/输出流

时间:2015-07-28 16:02:06      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:unicode   输入流   输出流   

一、输出流

输出流有两套类结构:一是以 OutputStream 为基类的基于字节流的类,一是以 write 为基类的基于字符流的类。

1、OutputStream

OutputStream 类包括的类的主要功能是决定了输出到哪里,比如 将输出发送给一个文件(派生类FileOutputStream),还是发送给管道(派生类PipedOutputStream)等。

2、装饰类

装饰类的概念,就是在原有的基础上,要添加一种功能可以通过添加一个装饰来实现。与继承机制相比,装饰类是动态的,可以在运行时添加或者去除附加的功能,具有更大的灵活性。FilterOutputStream 就是装饰类的一个基类,它将属性或者有用的接口同输出流连接起来,为其他OutputStream 类(如 DateOutputStream\BufferOutputStream)提供了有用的功能。

DateOutputStream
与 DateInputStream 配合使用,以便采用“与平台无关”的形式,将原始数据类型写入一个数据流。如readBoolean(),readUTF(),readChar,readByte(),readDouble()等。所有的读取方法都是共享一个位置指示器的,即在前面的read方法执行后,后面再执行其他read方法都是从上一个read方法读取到的位置开始向后读取的。如开始执行了1次readByte()后面的readChar()是从第2个字节开始读的。

BufferedOutputStream
用该装饰类来实现把数据先放到缓冲区,避免每次发出很少的数据都要进行物理性的写入。通过调用flush(),对缓冲区进行刷新,即可完成物理性的写入。注意,flush()方法是清除缓冲区,强制之前被缓冲还没有写入流的字节会立即写入流。

如利用socket实现通信的时候
try {
            dis=new DataInputStream(new BufferedInputStream(socket.getInputStream()));
            dos=new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
        } catch (IOException e) {
            e.printStackTrace();
        }

3、write 类

write 类主要是在面向 Unicode 的、以字符为基础的 I/O 操作时使用。write 类是一个抽象类,并不是真正的数据流,但是它为用户提供了如如字符流一样写入二进制的方法。
Reader 类的子类:
BufferdWrite:    将文本写入到输出流中,同时对写入的字符提供缓冲
PipedWrite:    向PipedReader写入字符
PrintWrite:    写格式化字符(将二进制数格式化为字符并将它写入数据流)
StringWrite:    向字符串写入字符
FilterWrite:    写过滤后的流
OutputStreamWrite:写字符流
CharArrayWrite:    向字符数组写入字符

二、输入流

同输出流一样,输入流也分为 InpututStream 和 Reader,前者基于字节流,后者基于字符流。

1、InputStream

InputStream 是通过调用read方法从流中读取数据。通过调用close方法关闭InputStream,关闭输入流之后再试图调用它就会产生异常。

2、Reader 类

Reader 类用于对字符流的读取处理。
Reader 类的子类对应于 Reader 类。其中 InputStreamReader 能将二进制流转化为字符流。
例如,从网络上读取数据
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
其中getInputStream()方法返回socket类字节流,在通过InputStreamReader将其转化为字符流并通过BufferedReader对其封装,之后就可以使用BufferedReader提供的方法readLine一行一行地读入字符串。

版权声明:本文为博主原创文章,未经博主允许不得转载。

简单使用输入/输出流

标签:unicode   输入流   输出流   

原文地址:http://blog.csdn.net/liuruiqun/article/details/47106169

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!