Java 安卓:如何从互联网下载二进制文件

Java 安卓:如何从互联网下载二进制文件,java,android,url,download,Java,Android,Url,Download,我想从网上下载一个文件。到目前为止,我已经有了ff。代码: package com.example.downloadfile; import java.io.BufferedOutputStream; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class DownloadFile extends Activity { /** Called

我想从网上下载一个文件。到目前为止,我已经有了ff。代码:

package com.example.downloadfile;

import java.io.BufferedOutputStream;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class DownloadFile extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView tv = new TextView(this);

        String url = "http://www.fullissue.com/wp-content/uploads/2010/12/Adam-Lambert.jpg";
        String FileName = "/LocalDisk/jm"; // save in your sdcard


        try{

            java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL(url).openStream());
            java.io.FileOutputStream fos = new java.io.FileOutputStream(FileName);
            java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
            byte[] data = new byte[1024];
                int x=0;
                while((x=in.read(data,0,1024))>=0){
                    bout.write(data,0,x);               
                }
            fos.flush();
            bout.flush();
            fos.close();
            bout.close();
            in.close();

        }catch (Exception e){
            /* Display any Error to the GUI. */
            tv.setText("Error: " + e.getMessage());
        }

      this.setContentView(tv);
    }
}
我得到一个错误,当我运行此代码时,我的UI中出现了“错误:/LocalDisk/jm

非常感谢您的帮助!我是java和android开发新手……:)

字符串FileName=“/LocalDisk/jm”

这是绝对路径,所以你必须这样使用它

String FileName = Environment.getExternalStorageDirectory() + "/jm"; // /sdcard/jm
更多信息。 此外,在UI线程中下载文件也没有什么好主意,因为它阻塞了操作,并且可能导致活动没有响应。最好的方法是在后台处理此操作,并在完成后通知gui

字符串FileName=“/LocalDisk/jm”

这是绝对路径,所以你必须这样使用它

String FileName = Environment.getExternalStorageDirectory() + "/jm"; // /sdcard/jm
更多信息。
此外,在UI线程中下载文件也没有什么好主意,因为它阻塞了操作,并且可能导致活动没有响应。最好的方法是在后台处理此操作,完成后通知gui。

处理异常时,
消息不一定是最重要的部分。异常类型和stacktrace至少同样重要。请尝试
e.printStackTrace()
以获取有关该问题的更多详细信息。另外:
.close()
刷新流,之前无需调用
flush()
。关闭
bout
也将关闭
fos
。处理异常时,
消息不一定是最重要的部分。异常类型和stacktrace至少同样重要。请尝试
e.printStackTrace()
以获取有关该问题的更多详细信息。另外:
.close()
刷新流,之前无需调用
flush()
。关闭
bout
也将关闭
fos
。我没有使用SD卡,只是本地磁盘,可以吗?谢谢你的建议,我将先学习这项任务。:)什么是本地磁盘?基本上有两种类型的存储:内部存储和外部存储。内部是内部存储,外部是可移动媒体,比如sd卡。哦,是的,我是说内部存储:我不使用sd卡,只使用本地磁盘,可以吗?谢谢你的建议,我将先学习这项任务。:)什么是本地磁盘?基本上有两种类型的存储:内部存储和外部存储。内部是内部存储,外部是可移动媒体,比如sd卡。哦,是的,我是说内部存储:D