涉及的其他知识:
2.观察者模式
3.JAVA的IO流
使用HTTP协议下载文件分为以下几步:
1.创建一个URL对象
url = new URL(“文件下载地址”)
2.创建一个HttpURLConnection对象
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
3.获得一个InputStream对象
urlConn.getInputSream()
4.对InputStream对象进行操作,将读取到的流输入到StringBuffer中
5.输出StringBuffer
注:需要在Manifest文件中设置访问网络权限
<user-permission android:name = "android.permission.INTERNET"/>(在Minafest文件中)
文件访问SD卡:
1.得到当前设备SD卡的目录
Environment.getExternalStorageDirectroy()
2.访问SD卡的权限,添加在Manifest文件中
<user-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE"/>
(1)下载纯文本文件——实现代码如下:
使用者可以调用downloadtxt("下载路径")来下载纯文本文件,返回值为String类型的数据。
另:必须在Manifest文件中添加访问权限
(2)下载任意格式文件:
若要下载任意格式的文件并将其保存在SD卡中需要添加如下功能
1.得到SD卡目录
SDPATH = Environment.getExternalStorageDirectory() + "/";
2.在SD卡上创建目录
File dir = new File(SDPATH + dirName);
dir.mkdir();
3.在SD卡上创建文件
File file = new File(SDPATH + fileName);
file.createNewFile();
4.判断该文件在SD卡上是否存在
File file = new File(SDPATH + fileName);
return file.exists()
5.将得到的InputStream对象写入到SD卡中
OutputStream output = new FileOutputStream(file);
byte buffer [] = new byte[4*1024];
while((input.read(buffer))!= -1){
output.write(buffer);
}
output.flush();
因此需要设计一个类来封装这些功能,类FileUtils实现代码如下:
另:必须在Manifest文件中添加访问权限
根据FileUtils类中提供的方法,判断路径中文件是否存在、建立目录和文件并将下载下来的文件写入到指定目录下的文件中
实现代码如下: