一.把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"/>