我想从互联网上下载文件。到目前为止,我有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 dev ... :)的新手。)
答案 0 :(得分:1)
String FileName =“/ LocalDisk / jm”;
这是绝对路径所以你必须像这样使用它
String FileName = Environment.getExternalStorageDirectory() + "/jm"; // /sdcard/jm
有关getExternalStorageDirectory()的更多信息。 此外,在UI线程中下载文件并不是一个好主意,因为它会阻塞操作并可能导致活动无响应。最好的方法是使用AsyncTask在后台处理此操作,并在完成后通知gui。