导航

Android学习之文件下载

Posted on 2011-09-02 16:57  Qamefay  阅读(1825)  评论(0编辑  收藏  举报

     网络文件是怎么下载到本地的?简单的说就跟你在本地复制粘贴是一样的道理,就是把网络上文件里面的内容copy到你本地上一个文件里面,这样就实现了文件的下载.

   Andoird应用程序里要实现文件下载,需要哪些步骤呢?

   一.获得上网的权限

         我们要在网络上下载文件,首先你得可以上网。可以上网还不行,你得给你的应用程序响应的访问网络的权限才行,我们只需要在AndroidManifest.xml中添加一行代码就可以搞定。<uses-permission android:name="android.permission.INTERNET" />   你就别问我在Manifest文件的哪一个位置加了..

   二.获得HttpURLConnection对象

   如何获得HttpURLConnection对象呢?想要获得HttpURLConnection对象,首先你得先得到你文件的URL对象,其方法是URL myUrl = new URL(String url);传进去的参数就是你文件对应的String类型的URL咯,获得你文件的URL对象之后,我们可以调用其openConnection()的方法来获得我们需要的HttpURLConnection对象。

        HttpURLConnection huc = (HttpURLConnection)myUrl.openConnection();

   三.获得手机SDCard的操作权限

        你想把网络上的文件下载到本地上,你得先在本地创建一个对应的文件吧.既然你要先创建一个文件,还是得给你的程序添加响应的操作SDCard的权限,跟第一步一样,我们只需加上操作SDCard的权限的代码。<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 你别再问我在哪个位置加了..

   四.IO流操作

        你要操作文件,肯定就离不开IO流啦,Java基础不行的速补啦..在这里就讲讲步骤而已,由第三步设置好权限之后呢,你就可以访问你手机上的SDCard目录啦,通过Environment.getExternalStorageDirectory()这个方法,这个方法返回的是File对象,一般我们是要操作SDCard目录下的自己的目录,所以我们可以直接在后面加上自己的目录,Environment.getExternalStorageDirectory() + "/mypath",最好就是先通过Log.d的方法来判断这个目录是不是你想要的目录,是的话再继续下面的操作。

       知道如何获得SDCard目录了,然后我们就得先在目录下创建自己的文件咯,如何创建文件?那我就不讲了..自己去看Java基础吧,创建好文件之后,我们第二步已经创建好了你要下载的文件的HttpURLConnection对象,通过它的getInputStream()方法你就可以获得网络上对应文件的输入流了。这里可能有人会问,为什么是输入流呢?简单的说这里的输入流就是把数据输入到内存里,那输出流呢?那就是把内存里的东西输出到文件中去。既然我们已经获得了该文件的输入流,那我们就可以用该输入流进行IO操作啦,把数据通过输出流写入到我们的文件中,这样就可以实现文件的下载啦!

      (PS:关于Android的权限到底有哪些,你可以去官方文档中搜索android.Manifest.permission,在这个类的属性都是一些相应的权限。

    如果你操作含有中文的文本文件的时候出现乱码,你可以去看看我的另外一篇博文http://www.cnblogs.com/Qamefay/archive/2011/09/01/2161495.html

    还有下载文件的URL不要有中文!)