当前位置: 代码迷 >> Android >> 文件上载有关问题
  详细解决方案

文件上载有关问题

热度:12   发布时间:2016-05-01 14:48:16.0
文件下载问题
Java code
package y.b;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;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.ProgressBar;public class mainActivity extends Activity {    Button b;    OutputStream output;// 输入出流    ProgressBar bar;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        b = (Button) findViewById(R.id.btn);        bar = (ProgressBar) findViewById(R.id.bar);        b.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                down();            }        });    }    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            // TODO Auto-generated method stub            super.handleMessage(msg);            switch(msg.what) {                case 0:                    bar.setVisibility(View.VISIBLE);                    break;                case 1:                    bar.setProgress(msg.arg1);                    break;                case 2:                    bar.setVisibility(View.GONE);                    break;            }        }    };    // 下载方法 必须放在单独的线程里    private void down() throws RuntimeException {        new Thread(new Runnable() {            @Override            public void run() {                try {                    Message m = handler.obtainMessage();                    m.what = 0;                    m.sendToTarget();                    // 创建URL 写入下载地址                    URL url = new URL("http://10.0.2.2:8080/dem/untitled.bmp");                    // 创建HttpURLConnection                    HttpURLConnection urlcon = (HttpURLConnection) url                            .openConnection();                    // 获得文件大小                    // long TotalSize = Long.parseLong(urlcon                    // .getHeaderField("Content-Length"));                    // 获得文件大小                    int fileLength = urlcon.getContentLength();                    // 获得输入流                    InputStream is = urlcon.getInputStream();                    // 创建文件                    File file = new File("/mnt/sdcard/untitled.bmp");                    // 如果存在则删除                    if(file.exists())                        file.delete();                    // 创建文件                    file.createNewFile();                    // 创建文件输入流                    output = new FileOutputStream(file);                    byte buffer[] = new byte[4 * 1024];                    // 已下载                    int downsize = 0;                    while(true) {                        int down = is.read(buffer);                        if(down == -1) {                            break;                        }                        downsize += down;                        output.write(buffer);                        Message m2 = handler.obtainMessage();                        m2.what = 1;                        // 提示已下载百分之多少                        m2.arg1 = downsize * 100 / fileLength;                        m2.sendToTarget();                    }                    // 清除缓存                    output.flush();                }                catch(Exception e) {                    e.printStackTrace();                }                finally {                    try {                        // 关闭输出流                        output.close();                    }                    catch(Exception e) {                        e.printStackTrace();                    }                    Message m2 = handler.obtainMessage();                    m2.what = 2;                    m2.sendToTarget();                }            }        }).start();    }}
  相关解决方案