不能能够存储图像的URL到SD卡 [英] cant able to store image from url to sdcard

查看:97
本文介绍了不能能够存储图像的URL到SD卡的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要存储在\ MNT \ SD卡

图片

 包com.Downld_file_frm_net;

进口java.io.BufferedInputStream中;
进口的java.io.File;
进口java.io.FileOutputStream中;
进口java.io.IOException异常;
进口的java.io.InputStream;
进口的java.net.URL;
进口java.net.URLConnection中;

进口org.apache.http.util.ByteArrayBuffer;

进口android.app.Activity;
进口android.os.Bundle;
进口android.util.Log;

公共类Downld_file_frm_net延伸活动{
    / **第一次创建活动时调用。 * /
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
        //http://203.109.115.55/MRESC/images/150.jpg
        DownloadFromUrl("http://www.garyolsen.com/goclarke/digitalphotography/2006-2/NLechPortfolio/images/Fire%20Flower_jpg.jpg","Fire%20Flower_jpg.jpg");

    }

    公共无效DownloadFromUrl(字符串DownloadUrl,字符串文件名){

           尝试 {
                   文件根= android.os.Environment.getExternalStorageDirectory();

                   文件DIR =新的文件(root.getAbsolutePath()+MNT / SD卡/);
                   如果(dir.exists()== FALSE){
                        dir.mkdirs();
                   }

                   网址URL =新的URL(DownloadUrl); //你可以在这里写任何链接
                   档案文件=新的文件(目录,文件名);

                   长的startTime = System.currentTimeMillis的();
                   Log.d(下载管理器,下载开始时);
                   Log.d(下载管理器,下载网址:+网址);
                   Log.d(下载管理,已下载文件的名称:+文件名);

                   / *打开到URL的连接。 * /
                   URLConnection的UCON = url.openConnection();

                   / *
                    *定义InputStreams从URLConnection的阅读。
                    * /
                   InputStream的是= ucon.getInputStream();
                   的BufferedInputStream双=新的BufferedInputStream(是);

                   / *
                    *读取字节的缓冲区,直到有没有更多阅读(-1)。
                    * /
                   ByteArrayBuffer BAF =新ByteArrayBuffer(5000);
                   INT电流= 0;
                   而((电流= bis.read())!=  -  1){
                      baf.append((字节)电流);
                   }


                   / *读取转换为字符串的字节数。 * /
                   FileOutputStream中FOS =新的FileOutputStream(文件);
                   fos.write(baf.toByteArray());
                   fos.flush();
                   fos.close();
                   Log.d(下载管理器,下载现成的+((System.currentTimeMillis的() -  startTime时)/ 1000)+SEC);

           }赶上(IOException异常E){
               Log.d(下载管理,错误:+ E);
           }

        }
}
 

许可::

 <使用-权限的Andr​​oid:名称=android.permission.INTERNET对>< /使用-许可>
<使用-权限的Andr​​oid:名称=android.permission.WRITE_EXTERNAL_STORAG​​E>< /使用-许可>
 

logcate ::

  11月8号至11日:28:37.673:DEBUG / AndroidRuntime(7606):关闭虚拟机
11月8号至11号:28:37.673:DEBUG / dalvikvm(7606):调试器分离;对象注册了1项
11月8号至11号:28:38.223:DEBUG /下载管理器(7631):下载起始
11月8号至11号:28:38.223:DEBUG /下载管理器(7631):下载url:http://www.garyolsen.com/goclarke/digitalphotography/2006-2/NLechPortfolio/images/Fire%20Flower_jpg.jpg
11月8号至11号:28:38.233:DEBUG /下载管理器(7631):下载的文件名:火%20Flower_jpg.jpg
11月8号至11号:28:39.382:信息/国际(7631):在的BufferedInputStream的构造函数使用默认的缓冲区大小。这将是更好的是明确的,如果需要8K的缓冲区。
11月8号至11号:28:42.193:DEBUG / dalvikvm(7631):GC_FOR_MALLOC释放1181对象/ 146296字节在64ms内
11月8号至11号:28:45.552:DEBUG /下载管理器(7631):错误:java.io.FileNotFoundException:/mnt/sdcardmnt/sdcard/Fire%20Flower_jpg.jpg(没有这样的文件或目录)
11月8号至11号:28:45.672:信息/ ActivityManager(70):显示活动com.Downld_file_frm_net / .Downld_file_frm_net:8036毫秒(共8036毫秒)
11月8号至11号:28:50.802:DEBUG / dalvikvm(178):GC_EXPLICIT释放115对象/ 5224字节107ms
11月8号至11号:28:55.854:DEBUG / dalvikvm(190):GC_EXPLICIT释放733对象/ 40232字节119ms
 

解决方案

试试这个code

 包com.Downld_file_frm_net;

进口java.io.BufferedInputStream中;
进口的java.io.File;
进口java.io.FileOutputStream中;
进口java.io.IOException异常;
进口的java.io.InputStream;
进口的java.net.URL;
进口java.net.URLConnection中;

进口org.apache.http.util.ByteArrayBuffer;

进口android.app.Activity;
进口android.os.Bundle;
进口android.util.Log;

公共类Downld_file_frm_net延伸活动{
    / **第一次创建活动时调用。 * /
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
        //http://203.109.115.55/MRESC/images/150.jpg
        DownloadFromUrl("http://www.garyolsen.com/goclarke/digitalphotography/2006-2/NLechPortfolio/images/Fire%20Flower_jpg.jpg","Fire%20Flower_jpg.jpg");

    }

    公共无效DownloadFromUrl(字符串DownloadUrl,字符串文件名){

           尝试 {
                   文件DIR =新的文件(/ SD卡/ yourDir);


                   如果(dir.exists()== FALSE){
                        dir.mkdirs();
                   }

                   网址URL =新的URL(DownloadUrl); //你可以在这里写任何链接
                   档案文件=新的文件(目录,文件名);

                   长的startTime = System.currentTimeMillis的();
                   Log.d(下载管理器,下载开始时);
                   Log.d(下载管理器,下载网址:+网址);
                   Log.d(下载管理,已下载文件的名称:+文件名);

                   / *打开到URL的连接。 * /
                   URLConnection的UCON = url.openConnection();

                   / *
                    *定义InputStreams从URLConnection的阅读。
                    * /
                   InputStream的是= ucon.getInputStream();
                   的BufferedInputStream双=新的BufferedInputStream(是);

                   / *
                    *读取字节的缓冲区,直到有没有更多阅读(-1)。
                    * /
                   ByteArrayBuffer BAF =新ByteArrayBuffer(5000);
                   INT电流= 0;
                   而((电流= bis.read())!=  -  1){
                      baf.append((字节)电流);
                   }


                   / *读取转换为字符串的字节数。 * /
                   FileOutputStream中FOS =新的FileOutputStream(文件);
                   fos.write(baf.toByteArray());
                   fos.flush();
                   fos.close();
                   Log.d(下载管理器,下载现成的+((System.currentTimeMillis的() -  startTime时)/ 1000)+SEC);

           }赶上(IOException异常E){
               Log.d(下载管理,错误:+ E);
           }

        }
}
 

i want to store images in \mnt\sdcard

    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://www.garyolsen.com/goclarke/digitalphotography/2006-2/NLechPortfolio/images/Fire%20Flower_jpg.jpg","Fire%20Flower_jpg.jpg");

    }

    public void DownloadFromUrl(String DownloadUrl, String fileName) {

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

                   File dir = new File (root.getAbsolutePath() + "mnt/sdcard/");
                   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);
           }

        }
}

permission ::

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

logcate ::

   08-11 11:28:37.673: DEBUG/AndroidRuntime(7606): Shutting down VM
08-11 11:28:37.673: DEBUG/dalvikvm(7606): Debugger has detached; object registry had 1 entries
08-11 11:28:38.223: DEBUG/DownloadManager(7631): download begining
08-11 11:28:38.223: DEBUG/DownloadManager(7631): download url:http://www.garyolsen.com/goclarke/digitalphotography/2006-2/NLechPortfolio/images/Fire%20Flower_jpg.jpg
08-11 11:28:38.233: DEBUG/DownloadManager(7631): downloaded file name:Fire%20Flower_jpg.jpg
08-11 11:28:39.382: INFO/global(7631): Default buffer size used in BufferedInputStream constructor. It would be better to be explicit if an 8k buffer is required.
08-11 11:28:42.193: DEBUG/dalvikvm(7631): GC_FOR_MALLOC freed 1181 objects / 146296 bytes in 64ms
08-11 11:28:45.552: DEBUG/DownloadManager(7631): Error: java.io.FileNotFoundException: /mnt/sdcardmnt/sdcard/Fire%20Flower_jpg.jpg (No such file or directory)
08-11 11:28:45.672: INFO/ActivityManager(70): Displayed activity com.Downld_file_frm_net/.Downld_file_frm_net: 8036 ms (total 8036 ms)
08-11 11:28:50.802: DEBUG/dalvikvm(178): GC_EXPLICIT freed 115 objects / 5224 bytes in 107ms
08-11 11:28:55.854: DEBUG/dalvikvm(190): GC_EXPLICIT freed 733 objects / 40232 bytes in 119ms

解决方案

try this code

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://www.garyolsen.com/goclarke/digitalphotography/2006-2/NLechPortfolio/images/Fire%20Flower_jpg.jpg","Fire%20Flower_jpg.jpg");

    }

    public void DownloadFromUrl(String DownloadUrl, String fileName) {

           try {
                   File dir = new File("/sdcard/yourDir");               


                   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);
           }

        }
}

这篇关于不能能够存储图像的URL到SD卡的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆