如何在android中下载图像并存储在SD卡中?

如何在android中下载图像并存储在SD卡中?,android,android-image,Android,Android Image,我准备了从服务器下载图像并存储在SD卡中的代码。为此,我准备了代码 URL url; try { url = new URL("http://myserver_path/applikaza/appstore/apks/ScrResoluton/scrresolution.jpg"); input = url.openStream(); String storagePath = Environment.getExternalStorageDirectory().t

我准备了从服务器下载图像并存储在SD卡中的代码。为此,我准备了代码

 URL url;
 try {
     url = new URL("http://myserver_path/applikaza/appstore/apks/ScrResoluton/scrresolution.jpg");
     input = url.openStream();
     String storagePath = Environment.getExternalStorageDirectory().toString();
     String basepath = storagePath + "/Guayama/" + folderName;
     output = new FileOutputStream(basepath + "/home.png");
     byte[] buffer = new byte[5000];

     int bytesRead = 0;
     while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) {
         output.write(buffer, 0, bytesRead);
     }

 } catch (MalformedURLException e) { // TODO Auto-generated catch block
     e.printStackTrace();
 } finally {
     output.close();
     input.close();
 }   

但在输出端出现了NullPointerException。关闭。我想在哪里出错了。请帮助我

在output.close处出现NullPointerException的原因是URL格式不正确。首先,它不包含有效的协议。这将导致在线路上抛出MalformedURLException

url = new URL("E:/Suresh/images/home.png");
然后直接转到catch块,后面是调用output.close的finally块,但由于行

output = new FileOutputStream(basepath + "/home.png");
他从未被处决

您需要更正URL请参见说明,您需要更正异常处理,就像MalformedURLException的情况一样,这只会在您设置URL值时抛出,因此在执行最终块时,您的输出或输入永远不会有非空值


您的URL可能应为以下格式http://something/Suresh/images/home.png 或许file://something/Suresh/images/home.png. 如果home.png文件位于安卓设备的另一台机器上,请尝试通过web浏览器访问它,并使用web浏览器显示的URL以及http://。

您使用的是路径E:/Suresh/images/home.png,这是您的计算机路径。那么android设备是如何理解这个url的呢?E:/Suresh/images/home.png这是你的服务器路径吗?刚才我更改了路径…..更改了路径后我得到了android.os.networkonMainThreadException你需要使用AsyncTask来下载,你不应该在主UI线程上使用网络。耶。。。现在只有我创建了AsyncTask。它工作正常。刚才我更改了路径…..更改路径后,我得到了android.os.networkonMainthreadException这意味着您试图从用户界面线程访问网络,这几乎总是一个坏主意。您应该研究android线程,并创建一个单独的线程来执行此网络访问并与UI线程通信如果您进行搜索,将有大量的示例。如果你想暂时解决这个问题,你可以让你的应用程序针对蜂窝之前的早期android版本,因为从UI线程访问网络不会引发异常pre-Honeycomb。但是,如果你只是玩游戏,这不是一个好的长期解决方案。