Java io流

来源:互联网 发布:g71编程实例 编辑:程序博客网 时间:2024/05/16 06:25

io流根据数据流向不同分为输入流和输出流,读写操作的执行是以程序为主体来说的,对输入流(即从别的地方来的输入),程序执行读操作,对输出流(输出到别的地方),程序执行写操作,记住四个字“读入写出”。

根据功能的不同分为节点流和处理流,节点流是直接从一个源读写数据的流,如FileInputStream是一个节点流,可以直接从文件读取数据;处理流是在对节点流封装的基础上的一种流,如BufferedInputStream可以包装FileInputStream,使得其有缓冲功能。

根据处理数据类型不同分为字节流和字符流。

字节流:读取单位是字节(1byte=8bit),可以处理任意类型的数据(包括图片,avi),字节流操作是对文件本身的操作,不会用到缓冲区

字符流:读取单位是字符(1char=2byte),只能处理字符类型的数据,字符流是通过缓冲区间接对文件进行操作。

不管流的分类是多么的丰富和复杂,其根源来自于四个基本的类

1输入字节流InputStream

InputStream 是所有的输入字节流的父类,它是一个抽象类。ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它们分别从Byte 数组、StringBuffer、和本地文件中读取数据。

2输出字节流OutputStream

OutputStream 是所有的输出字节流的父类,它是一个抽象类。

3字符输入流reader

4字符输出流writer

字符流和字节流的转换:

从字节流到字符流:InputStreamReader、OutputStreamWriter类可以实现。

从字符流到字节流:可以从字符流中获取char[]数组,转换为String,然后调用String的API函数getBytes() 获取到byte[],然后就可以通过ByteArrayInputStream、ByteArrayOutputStream来实现到字节流的转换。

看一句代码:

BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));

其中绿色部分为一个字节流,红色部分作用就是将字节流转换为字符流,黄色部分就是能让你一次性读取多个字符

0 0
原创粉丝点击