文件下载

其实广泛来说我觉得最好的做法是专门创建一个HttpDownloader(如果还有其它协议也可以创建其它的比如UDPDownloader),里面包含下载各种文件的方法和以各种协议下载的方法,然后在主类中需要的时候(比如说按下下载按钮),直接创建一个对象并且调用其中的相对应的方法就行。还有一种方法就是用switch方法,根据文件后缀的不同调用不同的方法。

可以使用很多协议来进行下载,但是通常都是http。


1.使用http协议下载文件

根据需要下载的文件的类型不同,相应的代码也不同。比如说文本需要最终现实为字符,但是mp3却需要相应的编码格式。从网上下载东西需要在Manifest文件中进行声明

1)下载文本文件

a.第一步是创建一个URL对象 url   private URL url =null;

b.第二步是通过这个url对象调用openConnection()方法来创建一个HttpURLConnection对象urlConnection

HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();

在这个地方我犯了一个严重错误,把HttpURLConnection写成了HttpsURLConnection

c.然后是得到InputStream对象,urlConnection.getInputStream(),通常封装成BufferedReader类型,因为它有readline方法很方便,读出来的是String类型,把它赋给一个变量

BufferedReader reader = new BufferesReader(newInputStreamReader(urlConnection.getInputStream()));

d.最后才是从buffer中读取数据

e.同时必须记住的是要在AndroidManifest文件中添加Internet的使用权限:andorid.permission.INTERNET

2.将下载的文件写入SD卡内

往sd卡中写东西也需要在manifest文件中加上权限:android.permission.WRITE_EXTERNAL_STORAGE

要访问SD卡,必须首先得到当前设备的SD卡的目录。不同设备的SD卡可能目录不一样,通过Environment.getExternalStorageDirectory()就不用管这些问题,比较保险。

可以专门写一个类,用来进行文件在sd卡上面的读写。

首先可以定义一个字符串类型的变量,然后写一个构造方法,里面调用上面所说的方式来将sd卡的目录赋值给这个变量。

定义一个getPath方法,专门用来取得sd卡的目录。

然后定义一个判断目录上是否已经存在某个文件的方法。

分别定义一个创建文件和创建文件夹的方法。

最后定义一个将InputStream得到的数据写入SD卡的方法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值