国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android實現文件下載功能

2019-10-22 18:22:53
字體:
來源:轉載
供稿:網友

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:tools="http://schemas.android.com/tools"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:paddingBottom="@dimen/activity_vertical_margin"   android:paddingLeft="@dimen/activity_horizontal_margin"   android:paddingRight="@dimen/activity_horizontal_margin"   android:paddingTop="@dimen/activity_vertical_margin"   tools:context=".MainActivity" >    <Button     android:id="@+id/btn_txt"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:text="download lrc" />      <Button     android:id="@+id/btn_mp3"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:layout_below="@id/btn_txt"     android:text="download mp3" />  </RelativeLayout> 

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;    /**    * 根據URL下載文件,前提是這個文件當中的內容是文本,函數的返回值就是文件當中的內容    * 1.創建一個URL對象    * 2.通過URL對象,創建一個HttpURLConnection對象    * 3.得到InputStram    * 4.從InputStream當中讀取數據    * @param urlStr    * @return    */   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();   }    /**    * 該函數返回整形 -1:代表下載文件出錯   0:代表下載文件成功   1:代表文件已經存在    */   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;   }    /**    * 根據URL得到輸入流    *    * @param urlStr    * @return    * @throws MalformedURLException    * @throws IOException    */   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() + "/";   }   /**    * 在SD卡上創建文件    *    * @throws IOException    */   public File creatSDFile(String fileName) throws IOException {     File file = new File(SDPATH + fileName);     file.createNewFile();     return file;   }      /**    * 在SD卡上創建目錄    *    * @param dirName    */   public File creatSDDir(String dirName) {     File dir = new File(SDPATH + dirName);     dir.mkdirs();     return dir;   }    /**    * 判斷SD卡上的文件夾是否存在    */   public boolean isFileExist(String fileName){     File file = new File(SDPATH + fileName);     return file.exists();   }      /**    * 將一個InputStream里面的數據寫入到SD卡中    */   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;   } } 

android,文件下載

 如果不能下載,請先將windows防火墻關閉。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 禹州市| 会同县| 万安县| 彭州市| 哈尔滨市| 黄平县| 绵阳市| 平凉市| 抚远县| 南昌市| 大悟县| 永泰县| 民县| 安乡县| 社旗县| 郎溪县| 剑阁县| 巩义市| 都安| 获嘉县| 武川县| 柳州市| 青阳县| 巴青县| 莎车县| 兴和县| 宁波市| 民权县| 乐陵市| 衡阳市| 抚顺市| 白城市| 开平市| 安龙县| 垫江县| 繁峙县| 邵阳市| 乐陵市| 松江区| 宿松县| 买车|