用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - android代码库

从指定网站下载文件

2014-04-09 作者: 玉海举报

[android]代码库

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

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	private EditText urlText;	//下载地址编辑框
	private Button button;	//下载按钮
	private Handler handler; // 声明一个Handler对象
	private boolean flag = false;	//标记是否成功的变量

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		urlText = (EditText) findViewById(R.id.editText_url); // 获取布局管理器中添加的下载地址编辑框
		button = (Button) findViewById(R.id.button_go); // 获取布局管理器中添加的下载按钮
		// 为“下载”按钮添加单击事件监听器
		button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 创建一个新线程,用于从网络上获取文件
				new Thread(new Runnable() {
					public void run() {
						try {
							String sourceUrl = urlText.getText().toString(); // 获取下载地址
							URL url = new URL(sourceUrl); // 创建下载地址对应的URL对象
							HttpURLConnection urlConn = (HttpURLConnection) url
									.openConnection(); // 创建一个连接
							InputStream is = urlConn.getInputStream(); // 获取输入流对象
							if (is != null) {
								String expandName = sourceUrl.substring(
										sourceUrl.lastIndexOf(".") + 1,
										sourceUrl.length()).toLowerCase(); // 获取文件的扩展名
								String fileName = sourceUrl.substring(
										sourceUrl.lastIndexOf("/") + 1,
										sourceUrl.lastIndexOf(".")); // 获取文件名
								File file = new File("/sdcard/pictures/"
										+ fileName + "." + expandName); // 在SD卡上创建文件
								FileOutputStream fos = new FileOutputStream(
										file); // 创建一个文件输出流对象
								byte buf[] = new byte[128];// 创建一个字节数组
								// 读取文件到输出流对象中
								while (true) {
									int numread = is.read(buf);
									if (numread <= 0) {
										break;
									} else {
										fos.write(buf, 0, numread);
									}
								}
							}
							is.close(); // 关闭输入流对象
							urlConn.disconnect(); // 关闭连接
							flag = true;
						} catch (MalformedURLException e) {
							e.printStackTrace(); // 输出异常信息
							flag = false;
						} catch (IOException e) {
							e.printStackTrace(); // 输出异常信息
							flag = false;
						}
						Message m = handler.obtainMessage(); // 获取一个Message
						handler.sendMessage(m); // 发送消息
					}
				}).start(); // 开启线程

			}
		});
		handler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				if (flag) {
					Toast.makeText(MainActivity.this, "文件下载完成!",
							Toast.LENGTH_SHORT).show(); // 显示消息提示
				} else {
					Toast.makeText(MainActivity.this, "文件下载失败!",
							Toast.LENGTH_SHORT).show(); // 显示消息提示
				}
				super.handleMessage(msg);
			}
		};
	}
}

[代码运行效果截图]


从指定网站下载文件

[源代码打包下载]




网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...