我下载文件时,需要访问网络,在这里,添加了个线程
package com.action;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import android.app.Activity;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class Main extends Activity { private Button btn; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn = (Button) findViewById(R.id.btn1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new Thread(runnable).start(); } }); } private Runnable runnable = new Runnable() { @Override public void run() { try { String fileName = Environment.getExternalStorageDirectory() .getAbsolutePath() + "/img3.jpg"; System.out.println("fileName:" + fileName); String url = "http://hiphotos.baidu.com/%B7%E5%B7%E5%CD%C3/pic/item/769ab3eec5ce730c2cf534a1.jpg"; URL Url = new URL(url); URLConnection conn = Url.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); int fileSize = conn.getContentLength(); if (fileSize <= 0) { // 获取内容长度为0 throw new RuntimeException("无法获知文件大小 "); } if (is == null) { // 没有下载流 throw new RuntimeException("无法获取文件"); } FileOutputStream fos = new FileOutputStream(fileName); // 创建写入文件内存流,通过此流向目标写文件 byte buf[] = new byte[1024]; int downLoadFilePosition = 0; int numread; while ((numread = is.read(buf)) != -1) { fos.write(buf, 0, numread); downLoadFilePosition += numread; } is.close(); } catch (IOException e) { e.printStackTrace(); } } };}
?下载文件时,需要访问网络,需要配置访问网络权限