从URL下载图像

时间:2011-07-20 10:17:17

标签: android

我想从互联网上下载图片:: 我引用了this

并尝试此代码::

 package com.Downld_file_frm_net;

 import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLConnection;

 import org.apache.http.util.ByteArrayBuffer;

      import android.app.Activity;
 import android.os.Bundle;
 import android.util.Log;

 public class Downld_file_frm_net extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //http://203.109.115.55/MRESC/images/150.jpg
         DownloadFromUrl("http://nssdc.gsfc.nasa.gov/planetary/image/cassini_titan_15.jpg","cassini_titan_15.jpg");

}

public void DownloadFromUrl(String DownloadUrl, String fileName) {

       try {
               File root = android.os.Environment.getExternalStorageDirectory();               

               File dir = new File (root.getAbsolutePath() + "/xmls");
               if(dir.exists()==false) {
                    dir.mkdirs();
               }

               URL url = new URL(DownloadUrl); //you can write here any link
               File file = new File(dir, fileName);

               long startTime = System.currentTimeMillis();
               Log.d("DownloadManager", "download begining");
               Log.d("DownloadManager", "download url:" + url);
               Log.d("DownloadManager", "downloaded file name:" + fileName);

               /* Open a connection to that URL. */
               URLConnection ucon = url.openConnection();

               /*
                * Define InputStreams to read from the URLConnection.
                */
               InputStream is = ucon.getInputStream();
               BufferedInputStream bis = new BufferedInputStream(is);

               /*
                * Read bytes to the Buffer until there is nothing more to read(-1).
                */
               ByteArrayBuffer baf = new ByteArrayBuffer(5000);
               int current = 0;
               while ((current = bis.read()) != -1) {
                  baf.append((byte) current);
               }


               /* Convert the Bytes read to a String. */
               FileOutputStream fos = new FileOutputStream(file);
               fos.write(baf.toByteArray());
               fos.flush();
               fos.close();
               Log.d("DownloadManager", "download ready in" + ((System.currentTimeMillis() - startTime) / 1000) + " sec");

       } catch (IOException e) {
           Log.d("DownloadManager", "Error: " + e);
       }

    }
 }

但不能将图像存储在emulator的SDCARD上.i logcat没有错误genrate我已经提供了所有许可。

1 个答案:

答案 0 :(得分:2)

更改您的代码:::

   File dir = new File (root.getAbsolutePath() + "/xmls");

   File dir = new File (root.getAbsolutePath() + "/mnt/sdcard");