网页读取数据,以及输入输出流的代码收集

来源:互联网 发布:淘宝运营pdf 编辑:程序博客网 时间:2024/05/16 17:56

本人第一篇博客,简陋之处敬请谅解!!!

本篇主要讨论一下 InputStream 和 OutputStream的用法,和如何利用HttpURLConnection获取网页数据

最近经常会遇到json串的解析,而很多json串都是从三方的网站获取的。所以我们首先就得知道如何从网页上获取这些数据:

这里就要用到HttpURLConnection

在说这个类之前,我们首先要定义一个URL对象URL url=new URL("网址");


如图所示,HttpURLConnection类为抽象类,所以初始化的时候我们一般会用URL (统一资源定位符)的openConnection()方法,此方法的源码解释为“返回一个指向当前URL所涉及到的资源的新的连接”。<下图>


在这里,我们已经得到了资源的连接,然后通过此连接的getInputStream() 方法,获得一个InputStream字节流对象;

有了字节流对象, 我们就可以通过inputStream得到String类型的数据了。

InputStream和OutputStream

下面开始说InputStream,InputStream为一字节流,通常在操作的时候我们通常会把它转化为字符流,我们通常用InputStreamReader的有参构造方法进行实例化  <下图>



得到的数据为InputStreamReader字符读取流,我们已经直接可以使用此InputStreamReader了,但是为了程序的高效方面,我们把字符读取流加入到字符串缓冲流(BufferedReader)中,通过new BufferedReader(InputStreamReader inputStreamReader)方法实例化BufferedReader缓冲流,从而创建一个BufferedReader对象 reader。

然后我们调用reader的readLine()方法,此readLine()是对字符流一行一行的读取,我们将每次读取的一行都赋值给一个新的字符变量。当readLine()方法读取结束时,将会返回null值,至此读取完毕!

我们将每次读取的一行字符保存到事先声明的StringBuilder对象,StringBuilder为一可无限增长的类似字符串类型,它的主要方法是append(),这样当读取结束的时候,所读取的每行数据都保存到了StringBuilder对象中,然后我们直接调用StringBuilder的toString()方法即可得到网页的数据。

当然最后要依次关闭流!!


对于 OutputStream,我们一般在保存文件的时候用到,它的基本格式与InputStream相差无几,也是读取字符串,然后转化为字节流,根据write()方法写入到File文件,代码如下所示:

其它主要代码如下图所示





1 0