用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...