android简易下载

package downlearn.wdd;


import java.io.File;
import java.io.InputStream;   
import java.io.InputStreamReader;  




import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import android.support.v4.app.NavUtils;


import java.io.BufferedReader;   
import java.io.File;   
import java.io.FileOutputStream;
import java.io.IOException;   
import java.io.InputStream;   
import java.io.InputStreamReader;   
import java.io.OutputStream;
import java.net.HttpURLConnection;   
import java.net.MalformedURLException;   
import java.net.URL;   


public class DownActivity extends Activity {


Button but;
private int FILESIZE = 4 * 1024;
private String SDPATH;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_down);
        but = (Button)findViewById(R.id.download);
        but.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
InputStream inputStream = null;   
SDPATH = Environment.getExternalStorageDirectory() + "/";
File file = new File(SDPATH + "down/"+"2.jpg");
String Url = "http://imgsrc.baidu.com/baike/pic/item/0dd7912397dda14431ba89ffb2b7d0a20df486c8.jpg";
int result;
if (file.exists())
{
Log.d("TAG","file exist");
result =  1;
}
else
{
URL url = null; 
HttpURLConnection urlConn = null;
OutputStream output = null;
        try {   
            url = new URL(Url);   
            urlConn = (HttpURLConnection)url.openConnection();   
            inputStream = urlConn.getInputStream();   
               
        } catch (MalformedURLException e) {   
            e.printStackTrace();   
        } catch (IOException e) {   
            e.printStackTrace();   
        } 
        
        File dir = new File(SDPATH + "down/");   
        dir.mkdir();
        try {
file.createNewFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
        
try {
        output = new FileOutputStream(file);
        byte buffer[] = new byte[FILESIZE];
     // 将输入流中的内容先输入到buffer中缓存,然后用输出流写到文件中
     do {
     int length = (inputStream.read(buffer));
     if (length != -1) {
      output.write(buffer, 0, length);
     } else {
     break;
     }
     } while (true);


            output.flush();


} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();

catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
        finally{   
            try {  
             if(inputStream != null )
                inputStream.close();   
            } catch (IOException e) { 
             System.out.println(e.toString());
                e.printStackTrace();   
            }   
        }   
result = 0;
}
if (file.exists() && result == 0)
{
Log.d("TAG","file down success");
Toast.makeText(DownActivity.this, "Down Success", Toast.LENGTH_SHORT).show();
}
ImageView show = (ImageView)findViewById(R.id.image);
Bitmap bitmap = BitmapFactory.decodeFile(SDPATH + "down/" + "2.jpg");
show.setImageBitmap(bitmap);
}
});
    }
    

}

///DownActivity.java//


<?xml version="1.0" encoding="utf-8"?>   
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
    android:orientation="vertical"   
    android:layout_width="fill_parent"   
    android:layout_height="fill_parent"   
    >   
<Button     
    android:id="@+id/download"   
    android:layout_width="fill_parent"    
    android:layout_height="wrap_content"    
    android:text="downfile">
</Button>   


<ImageView
android:id="@+id/image"
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
/>
   
</LinearLayout>  


///main.xml//

在androidManifest.xml中需要开启

<!-- 访问网络和操作SD卡 加入的两个权限配置-->   
<uses-permission android:name="android.permission.INTERNET"/>   
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>



另外:

 下载数据流读写可能出现的问题,用第一种方法可能出现下载数据流多次写入的问题,第二种方法没有这个问题
byte buffer[]=new byte[1024]; 
//将输入流中的内容先输入到buffer中缓存,然后用输出流写到文件中 
while((inputstream.read(buffer))!=-1) 

outputstream.write(buffer); 

【改成】
byte buffer[] = new byte[128];
// 将输入流中的内容先输入到buffer中缓存,然后用输出流写到文件中
do {
int length = (inputstream.read(buffer));
if (length != -1) {
outputstream.write(buffer, 0, length);
} else {
break;
}
} while (true); 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值