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);