从URL下载图片

3
我想从互联网上下载图片: 我参考了这里的内容。
并尝试使用以下代码:
 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);
       }

    }
 }

但是不能将图像存储在模拟器的SDCARD上。我查看了logcat,没有错误生成,我已经授予所有提到的权限。

1个回答

2
改变你的代码:::
   File dir = new File (root.getAbsolutePath() + "/xmls");

To

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接