关于Java的输入输出流(InputString,OutputString)

InputStream:我们在读取网路流中数据的时候必须先得到InputStream,例如Java的URLConnection和Socket中都有

getInputStream()这个方法来获取网路数据的输入流。得到InputStream后,就可以读取流中的数据,怎么读取呢?请看下文,有以下几种类型的数据

(1)如果流中的数据只是字符串,那就很简单,看下图中的代码,BufferedReader和InputStreamReader这两个类的区别可以自己查看Java源代码

(2)如果流中的数据是图片,在android中的话就很简单,android里面有个图片类BitmapFactory,里面有个方法      DecodeStream(InputStream)就可以直接将流直接解码还原成图片文件。

(3)如果流中的数据也是文件(图片或视频或其他文件),并且需要把流写入本地SD卡或继续将流发送出去的话,这种情况下就需要与OutputStream结合在一起了,下面再继续介绍OutputStream,并且一起探讨这种情况。


OutputStream:如果我们需要把一些数据(字符串或文件)通过网络发送出去或者写进自己本机的中的时候,就必须得到OutputStream,得到OutputStream的方法有种情况: (1)如果要将数据写入本地,则可以通过new FileOutputStream或ByteArrayOutputStream(反正都是OutputStream的子类,具体用法可以查看Java源代码或API)来得到写入文件的输入流;(2)如果要将数据通过网络发送出去,在Java中则有HttpUrlConnection和Socket中的getOutputStream()方法来获取相应的输出流。

获取了OutputStream后,就可以通过write(byte[] buffer)或write(byte[] buffer, int offset, int count)这两个方法将数据写进流中了,写进流中一般是一字节数组的方式写入。


回到InputStream的第三种情况,读取InputStream,一般通过read方法用一个while循环就可以读取出来,同时在循环的过程中,需要将每次循环读取出来的结果写进OutputStream,看如下代码



这样就可以把数据写进相应的输出流。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章