一.把Android.permission.INTERNET添加到AndroidMainfest.xml配置文件中,使整个程序有访问网络的权限。
- <uses-permission android:name="android.permission.INTERNET"/>
二.创建一个下载连接并返回InputStream对象。InputStream对象就是下载的文件的字节流
- /**
- * 获取下载文件的InputStream对象
- * @param urlStr 下载文件的地址
- * @return 返回InputStream文件对象
- * @throws MalformedURLException
- * @throws IOException
- */
- public InputStreamGet_inputStream(String urlStr)
- throws MalformedURLException ,IOException
- {
- //创建按一个URL实例
- url = new URL(urlStr);
- //创建一个HttpURLConnection的链接对象
- HttpURLConnection httpConn =(HttpURLConnection)url.openConnection();
- //获取所下载文件的InputStream对象
- InputStream inputStream=httpConn.getInputStream();
- //返回下载文件的InputStream对象
- return inputStream;
- }
三. 如果下载文本文件可以直接对文件内的字符进行操作。
- /**
- * 下载文本文件,直接返回字符串
- * @param urlStr 下载地址
- * @return 返回文本文件的字符串
- */
- public String DownTxt(StringurlStr)
- {
- //创建StringBuffer 对象存放转换后的字符串
- StringBuffer sBuffer = newStringBuffer();
- //创建临时的String变量,临时存放文本文件的每一行字符串
- String line = null;
- //BufferedReader有个可以一次读取一行内容的方法readLine()。
- //所以创建ufferedReader对象存放下载的文本内容
- BufferedReaderbufferedReader = null;
- try {
- //把Get_inputStream()方法返回的是字节流,转换成InputStreamReader类的字符流。
- //由于字节与字符流不好操作所以转换成BufferedReader
- //然后使用它的eadLine()方法一次读取一行内容。
- bufferedReader = newBufferedReader(new nputStreamReader(Get_inputStream(urlStr)));
- //循环读取每一行的内容赋值给StringBuffer 对象。
- while ((line =bufferedReader.readLine()) != null ) {
- sBuffer.append(line);
- }
- } catch (Exception e) {
- // TODO: handleexception
- e.printStackTrace();
- }finally{
- try {
- bufferedReader.close();
- } catch (Exception e){
- // TODO:handle exception
- e.printStackTrace();
- }
- }
- return sBuffer.toString();
- }
四.把文件直接写入到手机内存卡中
- /**
- * 写入文件
- * @param inputStream 下载文件的字节流对象
- * @param sdpath 文件的存放目录
- */
- public void WriteFile( InputStreaminputStream , String sdpath) {
- try {
- //在指定目录创建一个空文件并获取文件对象
- File file = createSDFile(sdpath);
- //获取一个写入文件流对象
- OutputStream ouput =new FileOutputStream(file);
- //创建一个4*1024大小的字节数组,作为循环读取字节流的临时存储空
- byte buffer[] = newbyte[4*1024];
- //循环读取下载的文件到buffer对象数组中
- while((inputStream.read(buffer)) != -1) {
- //把文件写入到文件
- ouput.write(buffer);
- }
- } catch (Exception e) {
- // TODO: handleexception
- e.printStackTrace();
- }finally{
- try {
- //关闭写入流
- ouput.close();
- } catch (Exception e){
- // TODO:handle exception
- e.printStackTrace();
- }
- }
- }
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>