在进行应用开发的时候经常会涉及到文件下载,并且存储到指定的位置。在手机端则通常会选择将下载的文件存储到内置存储或者外置的sd卡中。
要进行文件下载,首先需要在AndroidManifest.xml文件中申明需要的权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
分别是网络连接和外置空间读写的权限。
进行文件下载,主要涉及到java中输入、输出流的使用,整个过程也是非常简单。
文件下载可以细分为以下几个步骤:
1、从对应文件的url获取相应的输入流。
URL url = new URL("http://iphone.images.paojiao.cn/iphone/paper/20117/9/43198644/paojiao_a81d869d.jpg");
//创建连接
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//设置连接的一些属性
urlConnection.setRequestMethod("GET");
urlConnection.setDoInput(true);
urlConnection.connect();
inputStream = urlConnection.getInputStream();
2、获取根据需要保存的文件路径获取输出流。
File SDCardRoot = Environment.getExternalStorageDirectory();
File file = new File(SDCardRoot + "/test/test_download.jpg");
fileOutput = new FileOutputStream(file);
需要说明的是Environment.getExternalStorageDirectory()得到的是内置存储空间的路径。
3、进行读写操作
byte[] buffer = new byte[1024];
while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
fileOutput.write(buffer, 0, bufferLength);
}
fileOutput.flush();
4、读写完毕之后,关闭流。
try {
inputStream.close();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
fileOutput.close();
} catch (IOException e) {
e.printStackTrace();
}
这样,简单的文件下载功能便实现了,当然复杂的功能,如:断点续传,多线程下载等,后续再进行分析。