栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

android实现文件下载功能

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android实现文件下载功能

android 在网络上下载文件,供大家参考,具体内容如下

步骤 :

1.使用HTTP协议下载文件

- 创建一个HttpURLConnection对象 : HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
- 获取一个InputStream对象 : urlConn.getInputStream()
- 访问网络的权限 : android.permission.INTERNET

2.将下载的文件写入SDCARD
- 得到当前设备SD卡的目录 : Environment.getExternalStrageDirectory()
- 访问SD卡的权限 : android.permission.WRITE_EXTERNAL_STORAGE

代码 : 

activity_main.xml

 
 
  

MainActivity.java

package com.chay.download; 
 
import com.chay.utils.HttpDownloader; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
 
public class MainActivity extends Activity { 
   
  String urlStr_txt = "http://192.168.56.1:8080/mp3/wan.lrc"; 
  String urlStr_mp3 = "http://192.168.56.1:8080/mp3/wan.mp3"; 
  String path = "mp3/"; 
  String fileName = "wan.mp3"; 
  private Button downloadTxtButton; 
  private Button downloadMp3Button; 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    downloadTxtButton = (Button) findViewById(R.id.btn_txt); 
    downloadTxtButton.setonClickListener(new DownloadTxtListener()); 
    downloadMp3Button = (Button) findViewById(R.id.btn_mp3); 
    downloadMp3Button.setonClickListener(new DownloadMp3Listener()); 
  } 
 
  //下载歌词文件按钮监听器 
  class DownloadTxtListener implements onClickListener { 
    @Override 
    public void onClick(View v) { 
      Thread t = new DownloadTxtThread();  
      t.start(); 
      System.out.println("txt--->"); 
    } 
  } 
  //下载歌词文件线程 
  class DownloadTxtThread extends Thread{ 
    @Override 
    public void run() { 
      HttpDownloader httpDownloader = new HttpDownloader(); 
      String lrc = httpDownloader.download(urlStr_txt); 
      System.out.println(lrc); 
    } 
  } 
  //下载MP3文件按钮监听器 
  class DownloadMp3Listener implements onClickListener { 
    @Override 
    public void onClick(View v) { 
      Thread h = new DownMp3Thread(); 
      h.start(); 
      System.out.println("mp3--->"); 
    } 
  } 
  //下载MP3文件线程 
  class DownMp3Thread extends Thread{ 
    @Override 
    public void run() { 
      HttpDownloader httpDownloader = new HttpDownloader(); 
      int result = httpDownloader.downFile(urlStr_mp3, path, fileName); 
      System.out.println(result); 
    } 
  }   
} 

工具类:

HttpDownloader.java

package com.chay.utils; 
 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
 
public class HttpDownloader { 
  private URL url = null; 
 
   
  public String download(String urlStr) { 
    StringBuffer sb = new StringBuffer(); 
    String line = null; 
    BufferedReader buffer = null; 
    try { 
      // 创建一个URL对象 
      url = new URL(urlStr); 
      // 创建一个Http连接 
      HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); 
      // 使用IO流读取数据 
      buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream())); 
      while ((line = buffer.readLine()) != null) { 
 sb.append(line); 
      } 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } finally { 
      try { 
 buffer.close(); 
      } catch (Exception e) { 
 e.printStackTrace(); 
      } 
    } 
    return sb.toString(); 
  } 
 
   
  public int downFile(String urlStr, String path, String fileName) { 
    InputStream inputStream = null; 
    try { 
      FileUtils fileUtils = new FileUtils(); 

      if (fileUtils.isFileExist(path + fileName)) { 
 return 1; 
      } else { 
 inputStream = getInputStreamFromUrl(urlStr); 
 File resultFile = fileUtils.write2SDFromInput(path,fileName, inputStream); 
 if (resultFile == null) { 
   return -1; 
 } 
      } 
    } catch (Exception e) { 
      e.printStackTrace(); 
      return -1; 
    } finally { 
      try { 
 inputStream.close(); 
      } catch (Exception e) { 
 e.printStackTrace(); 
      } 
    } 
    return 0; 
  } 
 
   
  public InputStream getInputStreamFromUrl(String urlStr) 
      throws MalformedURLException, IOException { 
    url = new URL(urlStr); 
    HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); 
    InputStream inputStream = urlConn.getInputStream(); 
    return inputStream; 
  } 
} 

FileUtils.java

package com.chay.utils; 
 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
 
import android.os.Environment; 
 
public class FileUtils { 
  private String SDPATH; 
 
  public String getSDPATH() { 
    return SDPATH; 
  } 
  public FileUtils() { 
    //得到当前外部存储设备的目录 
    // /SDCARD 
    SDPATH = Environment.getExternalStorageDirectory() + "/"; 
  } 
   
  public File creatSDFile(String fileName) throws IOException { 
    File file = new File(SDPATH + fileName); 
    file.createNewFile(); 
    return file; 
  } 
   
   
  public File creatSDDir(String dirName) { 
    File dir = new File(SDPATH + dirName); 
    dir.mkdirs(); 
    return dir; 
  } 
 
   
  public boolean isFileExist(String fileName){ 
    File file = new File(SDPATH + fileName); 
    return file.exists(); 
  } 
   
   
  public File write2SDFromInput(String path,String fileName,InputStream input){ 
    File file = null; 
    OutputStream output = null; 
    try{ 
      creatSDDir(path); 
      file = creatSDFile(path + fileName); 
      output = new FileOutputStream(file); 
      byte buffer [] = new byte[4 * 1024]; 
      while((input.read(buffer)) != -1){ 
 output.write(buffer); 
      } 
      output.flush(); 
    } 
    catch(Exception e){ 
      e.printStackTrace(); 
    } 
    finally{ 
      try{ 
 output.close(); 
      } 
      catch(Exception e){ 
 e.printStackTrace(); 
      } 
    } 
    return file; 
  } 
} 

 如果不能下载,请先将windows防火墙关闭。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/157215.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号